home *** CD-ROM | disk | FTP | other *** search
/ Best of Shareware / Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso / mac / DOS / UTILITY / MXMNU238 / MARXMENU.DOC < prev    next >
Text File  |  1992-03-16  |  405KB  |  10,876 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.     ===================================================================
  23.  
  24.  
  25.  
  26.                       <*> Computer Tyme MarxMenu <*>
  27.  
  28.                              Reference Manual
  29.  
  30.                    Copyright 1989 - 1992 by Marc Perkel
  31.  
  32.         All Rights Reserved * Version 2.38 * Release Date: 03-16-92
  33.  
  34.     Computer Tyme * 411 North Sherman Suite 300 * Springfield Mo. 65802
  35.  
  36.                  (417) 866-1222 voice * (417) 866-1665 bbs
  37.  
  38.                            Fax: (417) 866-0135
  39.                           CompuServe 76505,1120
  40.  
  41.  
  42.  
  43.     ===================================================================
  44.  
  45.  
  46.  
  47.    Computer Tyme MarxMenu * Table of Contents              Page 1
  48.    _______________________________________________________________
  49.  
  50.  
  51.  
  52.        Copyright .........................................  1
  53.        License ...........................................  1
  54.        Warranty ..........................................  1
  55.        Acknowledgments ...................................  2
  56.        Trademarks ........................................  2
  57.        The MarxMenu Name .................................  2
  58.        Technical Support .................................  3
  59.        Installation ......................................  3
  60.        Installing the Network Survival Kit ...............  4
  61.        Overview of the MarxMenu System ...................  5
  62.        -- What MarxMenu Does .............................  7
  63.        The MARX.BAT File .................................  8
  64.        -- DROPTO.BAT .....................................  10
  65.        -- Support for early DOS versions .................  11
  66.        -- About Environment Variables ....................  12
  67.        -- Dealing with Multiple DOS Shells ...............  13
  68.        -- MarxMenu and TSR Control .......................  14
  69.        Sample Menus on Disk ..............................  15
  70.        Network Users .....................................  15
  71.        -- Network Menu Strategy ..........................  16
  72.        -- Novell Users ...................................  16
  73.        ---- The Novell Menu Translator ...................  17
  74.        ---- Logging out under Menu Control ...............  18
  75.        ---- Logging in with MarxMenu .....................  19
  76.        ---- Using Novell's Login .........................  19
  77.        ------ The CONFIG.SYS File ........................  20
  78.        ------ The AUTOEXEC.BAT File ......................  20
  79.        ------ The SHELL.CFG File .........................  22
  80.        ------ Using a Menu File to Log In ................  22
  81.        ------ Novell Search Drives .......................  23
  82.        ---- Setting File Attributes ......................  24
  83.        ---- Novell Semaphores ............................  24
  84.        Running a MarxMenu ................................  25
  85.        Upgrading MarxMenu ................................  26
  86.        Customizing MarxMenu Sample Files .................  27
  87.        Menu Analysis .....................................  28
  88.        Onkey Statements ..................................  28
  89.        Popup Menus .......................................  29
  90.        The Console .......................................  30
  91.        Repositioning the Top Window ......................  30
  92.        Mouse Support .....................................  31
  93.        Starting off the Easy Way .........................  31
  94.        About Variables ...................................  31
  95.        -- Numeric Variables ..............................  32
  96.        -- Boolean Variables ..............................  33
  97.        -- String Variables ...............................  33
  98.        -- Real Numbers ...................................  33
  99.        -- Local Variables ................................  34
  100.        -- Dates ..........................................  35
  101.        -- Passing Parameters to Procedures ...............  35
  102.        About Constants ...................................  36
  103.  
  104.  
  105.  
  106.    Computer Tyme MarxMenu * Table of Contents              Page 2
  107.    _______________________________________________________________
  108.  
  109.  
  110.        About Arrays ......................................  37
  111.        About Qualifiers ..................................  38
  112.        Pointer Variables .................................  39
  113.        Comments in Menu Files ............................  40
  114.        The MarxMenu Compiler .............................  40
  115.        MarxMenu Language Rules ...........................  41
  116.        Compiler Compatibility ............................  41
  117.        A word about DOS versions .........................  42
  118.        A word about BUGS .................................  43
  119.        Tips From the Master ..............................  43
  120.        -- Computers do Simple Tasks ......................  43
  121.        -- Complex Tasks are made of Simple Tasks .........  44
  122.        -- Learning Good Programming Habits ...............  44
  123.        -- Use Long Names .................................  45
  124.        -- Use Comments Liberally .........................  46
  125.        -- Indent Your code ...............................  47
  126.        -- For Duplicate Tasks, Use Procedures ............  48
  127.        -- Don't Program Yourself into a Corner ...........  49
  128.        -- For the POWER User .............................  49
  129.        Where MarxMenu is Heading .........................  50
  130.        A word to Writers and Reviewers ...................  51
  131.        Using MarxHelp ....................................  52
  132.        Printing the Example Files ........................  52
  133.        Security Issues ...................................  52
  134.        Keeping Users in the Menu .........................  53
  135.        -- Using BREAK.SYS ................................  54
  136.        -- Using the SHELL= Command .......................  55
  137.        MarxMenu Commands .................................  56
  138.        -- | ..............................................  56
  139.        -- ( ..............................................  56
  140.        -- ) ..............................................  57
  141.        -- * ..............................................  57
  142.        -- + ..............................................  57
  143.        -- - ..............................................  57
  144.        -- / ..............................................  57
  145.        -- < ..............................................  57
  146.        -- <= .............................................  57
  147.        -- <> .............................................  57
  148.        -- = ..............................................  57
  149.        -- > ..............................................  58
  150.        -- >= .............................................  58
  151.        -- %MenuFileName ..................................  58
  152.        -- Abs ............................................  58
  153.        -- Actual .........................................  58
  154.        -- Alias ..........................................  59
  155.        -- AllowAbort .....................................  59
  156.        -- AllowEsc .......................................  59
  157.        -- And ............................................  59
  158.        -- AppendArray ....................................  60
  159.        -- ApplicationMemory ..............................  60
  160.        -- ArcTan .........................................  60
  161.        -- AssignList .....................................  60
  162.  
  163.  
  164.  
  165.    Computer Tyme MarxMenu * Table of Contents              Page 3
  166.    _______________________________________________________________
  167.  
  168.  
  169.        -- BadDate ........................................  61
  170.        -- Bat ............................................  61
  171.        -- BatFileName ....................................  61
  172.        -- BigShadow ......................................  61
  173.        -- BinString ......................................  62
  174.        -- Blanked ........................................  62
  175.        -- BlankMessage ...................................  62
  176.        -- BlankScreenProgram .............................  62
  177.        -- BlankTime ......................................  63
  178.        -- Blink ..........................................  63
  179.        -- BlockBox .......................................  63
  180.        -- BootDrive ......................................  64
  181.        -- BoxBorderColor .................................  64
  182.        -- BoxHeader ......................................  64
  183.        -- BoxHeaderColor .................................  64
  184.        -- BoxHeaderLeft ..................................  64
  185.        -- BoxHeaderRight .................................  65
  186.        -- BoxFooter ......................................  65
  187.        -- BoxFooterLeft ..................................  65
  188.        -- BoxFooterRight .................................  65
  189.        -- BoxInsideColor .................................  66
  190.        -- BrightBackground ...............................  66
  191.        -- BuildPath ......................................  66
  192.        -- CancelListEntry ................................  67
  193.        -- CapsColor ......................................  67
  194.        -- CapsLock .......................................  67
  195.        -- Chain ..........................................  68
  196.        -- Char ...........................................  68
  197.        -- ChDir ..........................................  68
  198.        -- CleanFileName ..................................  68
  199.        -- ClearLine ......................................  69
  200.        -- ClearScreen ....................................  69
  201.        -- ClearScreenFirst ...............................  69
  202.        -- ClearScreenOnExit ..............................  69
  203.        -- ClockColor .....................................  69
  204.        -- ClockMode ......................................  70
  205.        -- ClockPos .......................................  70
  206.        -- ClosePrinter ...................................  71
  207.        -- ClusterSize ....................................  71
  208.        -- CmdLine ........................................  71
  209.        -- ColdBoot .......................................  71
  210.        -- ColorScreen ....................................  72
  211.        -- Comment ........................................  72
  212.        -- Console ........................................  72
  213.        -- ConsoleBorderColor .............................  72
  214.        -- ConsoleHeaderColor .............................  73
  215.        -- ConsoleInsideColor .............................  73
  216.        -- ConsolePos .....................................  73
  217.        -- Const ..........................................  73
  218.        -- Cos ............................................  73
  219.        -- CpuClass .......................................  73
  220.        -- CountryCode ....................................  74
  221.  
  222.  
  223.  
  224.    Computer Tyme MarxMenu * Table of Contents              Page 4
  225.    _______________________________________________________________
  226.  
  227.  
  228.        -- CurrentEnvironment .............................  74
  229.        -- CurrentWindow ..................................  74
  230.        -- Cursor .........................................  74
  231.        -- CustomBox ......................................  74
  232.        -- DateSeparator ..................................  74
  233.        -- DateString .....................................  75
  234.        -- Day ............................................  75
  235.        -- DayOf ..........................................  75
  236.        -- DayOfWeek ......................................  75
  237.        -- DayOfWeekOf ....................................  75
  238.        -- DecimalSeparator ...............................  75
  239.        -- Delete .........................................  76
  240.        -- DelFile ........................................  76
  241.        -- DisplayType ....................................  77
  242.        -- DirectoriesOnly ................................  77
  243.        -- Dispose ........................................  77
  244.        -- DosVersion .....................................  78
  245.        -- DosVersionString ...............................  78
  246.        -- DosWindow ......................................  78
  247.        -- DoubleLineBox ..................................  78
  248.        -- DrawBox ........................................  79
  249.        -- Drives .........................................  79
  250.        -- DvAppNumber ....................................  79
  251.        -- DvFrame ........................................  79
  252.        -- DvFreeze .......................................  79
  253.        -- DvHide .........................................  80
  254.        -- DvKillTask .....................................  80
  255.        -- DvLastHandle ...................................  80
  256.        -- DvLoaded .......................................  80
  257.        -- DvMoveWindow ...................................  80
  258.        -- DvMyHandle .....................................  80
  259.        -- DvPifExecute ...................................  81
  260.        -- DvResizeWindow .................................  81
  261.        -- DvSetBottom ....................................  81
  262.        -- DvSetTop .......................................  81
  263.        -- DvUnFreeze .....................................  82
  264.        -- DvUnHide .......................................  82
  265.        -- Else ...........................................  82
  266.        -- ElseIf .........................................  82
  267.        -- EndComment .....................................  83
  268.        -- Endif ..........................................  83
  269.        -- EndLoop ........................................  83
  270.        -- EndOfFile ......................................  83
  271.        -- EndProc ........................................  83
  272.        -- EndWhile .......................................  84
  273.        -- EnvFree ........................................  84
  274.        -- EnvSize ........................................  84
  275.        -- EraseTopWindow .................................  84
  276.        -- EraseWindow ....................................  84
  277.        -- Execute ........................................  85
  278.        -- ExistDir .......................................  86
  279.        -- ExistFile ......................................  86
  280.  
  281.  
  282.  
  283.    Computer Tyme MarxMenu * Table of Contents              Page 5
  284.    _______________________________________________________________
  285.  
  286.  
  287.        -- ExistOnPath ....................................  86
  288.        -- ExitCode .......................................  86
  289.        -- ExitMenu .......................................  87
  290.        -- Exp ............................................  87
  291.        -- Explode ........................................  87
  292.        -- ExplodeDelay ...................................  87
  293.        -- Extension ......................................  87
  294.        -- FileAppend .....................................  87
  295.        -- FileAssign .....................................  88
  296.        -- FileAttr .......................................  88
  297.        -- FileClose ......................................  88
  298.        -- FileCreate .....................................  88
  299.        -- FileDate .......................................  88
  300.        -- FileFlush ......................................  88
  301.        -- FileLog ........................................  89
  302.        -- FileOpen .......................................  89
  303.        -- FilePart .......................................  89
  304.        -- FilePos ........................................  89
  305.        -- FileReadln .....................................  90
  306.        -- FileRename .....................................  90
  307.        -- FileResult .....................................  90
  308.        -- FileSeek .......................................  90
  309.        -- FileSize .......................................  90
  310.        -- FileTime .......................................  90
  311.        -- FileWrite ......................................  90
  312.        -- FileWriteln ....................................  91
  313.        -- FixPath ........................................  91
  314.        -- Floppies .......................................  91
  315.        -- ForceExplosion .................................  91
  316.        -- ForceExtension .................................  91
  317.        -- Fraction .......................................  91
  318.        -- FreeDiskSpace ..................................  92
  319.        -- FreeEms ........................................  92
  320.        -- FreeMem ........................................  92
  321.        -- FreeMemory .....................................  92
  322.        -- GetMem .........................................  92
  323.        -- GotoXY .........................................  93
  324.        -- HexString ......................................  93
  325.        -- HiddenAndSystem ................................  93
  326.        -- HighWord .......................................  93
  327.        -- Hour ...........................................  93
  328.        -- HourOf .........................................  93
  329.        -- Hundredth ......................................  94
  330.        -- IdleProgram ....................................  94
  331.        -- If .............................................  95
  332.        -- InactiveBox ....................................  95
  333.        -- InactiveBoxColor ...............................  96
  334.        -- InactiveShadow .................................  96
  335.        -- Include ........................................  96
  336.        -- IncludeDirectories .............................  97
  337.        -- InputString ....................................  97
  338.        -- Insert .........................................  97
  339.  
  340.  
  341.  
  342.    Computer Tyme MarxMenu * Table of Contents              Page 6
  343.    _______________________________________________________________
  344.  
  345.  
  346.        -- InsertMode .....................................  97
  347.        -- Int ............................................  97
  348.        -- Integer ........................................  97
  349.        -- Intr ...........................................  98
  350.        -- InverseColor ...................................  98
  351.        -- Jump ...........................................  98
  352.        -- KbdReady .......................................  98
  353.        -- KeySave ........................................  98
  354.        -- KeyFromMouse ...................................  98
  355.        -- KillMusic ......................................  98
  356.        -- LastDrive ......................................  99
  357.        -- LastKey ........................................  99
  358.        -- Left ...........................................  99
  359.        -- Length .........................................  99
  360.        -- Ln .............................................  99
  361.        -- Loc ............................................  100
  362.        -- LockWord .......................................  101
  363.        -- Logoff .........................................  101
  364.        -- LogoffTime .....................................  101
  365.        -- Loop ...........................................  102
  366.        -- LoopIndex ......................................  103
  367.        -- LoopLevel ......................................  103
  368.        -- LoopLimit ......................................  103
  369.        -- MachineName ....................................  103
  370.        -- LowWord ........................................  104
  371.        -- MakeListEntry ..................................  104
  372.        -- MarxVersion ....................................  104
  373.        -- MasterEnvironment ..............................  104
  374.        -- Max ............................................  104
  375.        -- Mem ............................................  105
  376.        -- MemL ...........................................  105
  377.        -- MemSize ........................................  105
  378.        -- MemW ...........................................  105
  379.        -- MenuKeyBuffer ..................................  106
  380.        -- Mid ............................................  106
  381.        -- Min ............................................  106
  382.        -- MinorDosVersion ................................  106
  383.        -- Minute .........................................  106
  384.        -- MinuteOf .......................................  106
  385.        -- MkDir ..........................................  107
  386.        -- Mod ............................................  107
  387.        -- ModifyPath .....................................  107
  388.        -- Month ..........................................  107
  389.        -- MonthOf ........................................  107
  390.        -- Mouse ..........................................  108
  391.        -- MouseHorizontal ................................  108
  392.        -- MouseVertical ..................................  108
  393.        -- MoveWindow .....................................  108
  394.        -- MsDos ..........................................  109
  395.        -- MxCmd ..........................................  109
  396.        -- NamePart .......................................  109
  397.        -- NetworkVersion .................................  109
  398.  
  399.  
  400.  
  401.    Computer Tyme MarxMenu * Table of Contents              Page 7
  402.    _______________________________________________________________
  403.  
  404.  
  405.        -- NextWord .......................................  110
  406.        -- Nil ............................................  110
  407.        -- NoBoxBorder ....................................  110
  408.        -- NoExit .........................................  110
  409.        -- Not ............................................  110
  410.        -- NotesLeft ......................................  110
  411.        -- NotesPlayed ....................................  111
  412.        -- NovAccountExpDate ..............................  111
  413.        -- NovAddUserToGroup ..............................  111
  414.        -- NovAddToSet ....................................  111
  415.        -- NovAttach ......................................  111
  416.        -- NovAttachedServers .............................  111
  417.        -- NovBroadcastMode ...............................  112
  418.        -- NovCaptureCopies ...............................  112
  419.        -- NovCaptureFF ...................................  112
  420.        -- NovCaptureForm .................................  113
  421.        -- NovCaptureQueue ................................  113
  422.        -- NovCaptureReset ................................  113
  423.        -- NovCaptureSetup ................................  113
  424.        -- NovCaptureTabSize ..............................  114
  425.        -- NovCaptureTimeOut ..............................  114
  426.        -- NovCaptureUseBanner ............................  114
  427.        -- NovChangePassword ..............................  114
  428.        -- NovCleanVolumeName .............................  114
  429.        -- NovClearConnection .............................  115
  430.        -- NovCloseSemaphore ..............................  115
  431.        -- NovConnection ..................................  115
  432.        -- NovConnectionsInUse ............................  115
  433.        -- NovConsoleOperator .............................  115
  434.        -- NovCreateObject ................................  115
  435.        -- NovCreateProperty ..............................  116
  436.        -- NovDefaultServer ...............................  116
  437.        -- NovDeleteFromSet ...............................  116
  438.        -- NovDeleteObject ................................  116
  439.        -- NovDetach ......................................  117
  440.        -- NovDownServer ..................................  117
  441.        -- NovEndCapture ..................................  117
  442.        -- NovFreeDirSlots ................................  117
  443.        -- NovFreeVolumeSpace .............................  117
  444.        -- NovForceDownServer .............................  118
  445.        -- NovFullName ....................................  118
  446.        -- NovGetMessage ..................................  118
  447.        -- NovGraceLoginReset .............................  118
  448.        -- NovGraceLogins .................................  118
  449.        -- NovGroupMembers ................................  119
  450.        -- NovGroups ......................................  119
  451.        -- NovInGroup .....................................  119
  452.        -- NovLastLoginDate ...............................  119
  453.        -- NovLogin .......................................  119
  454.        -- NovLoginName ...................................  120
  455.        -- NovLogout ......................................  120
  456.        -- NovMapDrive ....................................  120
  457.  
  458.  
  459.  
  460.    Computer Tyme MarxMenu * Table of Contents              Page 8
  461.    _______________________________________________________________
  462.  
  463.  
  464.        -- NovMapRoot .....................................  120
  465.        -- NovMaxConnections ..............................  121
  466.        -- NovMinPasswordLength ...........................  121
  467.        -- NovMyLoginName .................................  121
  468.        -- NovMyPassword ..................................  121
  469.        -- NovMyPrintQueues ...............................  121
  470.        -- NovObjectID ....................................  121
  471.        -- NovObjects .....................................  122
  472.        -- NovObjectSecurity ..............................  122
  473.        -- NovOpenSemaphore ...............................  123
  474.        -- NovPasswordExpDate .............................  123
  475.        -- NovPreferredServer .............................  123
  476.        -- NovPrimaryServer ...............................  123
  477.        -- NovPrintQueues .................................  123
  478.        -- NovPropertySecurity ............................  124
  479.        -- NovPropertyValues ..............................  124
  480.        -- NovReadGroups ..................................  125
  481.        -- NovReadSecurityEquals ..........................  125
  482.        -- NovRemoveUserFromGroup .........................  125
  483.        -- NovRenameObject ................................  125
  484.        -- NovResult ......................................  126
  485.        -- NovScanProperties ..............................  126
  486.        -- NovScanTrusteePaths ............................  126
  487.        -- NovSecurityEquals ..............................  127
  488.        -- NovSemaphoreTimeOut ............................  127
  489.        -- NovSemaphoreUsers ..............................  127
  490.        -- NovSemaphoreValue ..............................  127
  491.        -- NovServerLogin .................................  127
  492.        -- NovServers .....................................  127
  493.        -- NovServerTime ..................................  127
  494.        -- NovSendMessage .................................  128
  495.        -- NovSetPreferredServer ..........................  128
  496.        -- NovSetPrimaryServer ............................  128
  497.        -- NovSetProperty .................................  128
  498.        -- NovSignalSemaphore .............................  129
  499.        -- NovStaticObject ................................  129
  500.        -- NovStaticProperty ..............................  129
  501.        -- NovStationAddress ..............................  129
  502.        -- NovTotalDirSlots ...............................  130
  503.        -- NovTotalVolumeSpace ............................  130
  504.        -- NovUserInGroup .................................  130
  505.        -- NovUsers .......................................  130
  506.        -- NovUsersLoggedIn ...............................  130
  507.        -- NovVersionNumber ...............................  130
  508.        -- NovVolumeNumber ................................  131
  509.        -- NovVolumes .....................................  131
  510.        -- NovWaitOnSemaphore .............................  131
  511.        -- NumberOfElements ...............................  131
  512.        -- Now ............................................  131
  513.        -- NumLock ........................................  132
  514.        -- Offset .........................................  132
  515.        -- OnKey ..........................................  132
  516.  
  517.  
  518.  
  519.    Computer Tyme MarxMenu * Table of Contents              Page 9
  520.    _______________________________________________________________
  521.  
  522.  
  523.        -- OnScreenOnly ...................................  134
  524.        -- OpenPrinter ....................................  134
  525.        -- OptionSwitch ...................................  134
  526.        -- Or .............................................  134
  527.        -- Ord ............................................  135
  528.        -- OverKey ........................................  135
  529.        -- Overlay ........................................  135
  530.        -- ParallelPorts ..................................  135
  531.        -- ParamStr .......................................  136
  532.        -- ParentEnvironment ..............................  136
  533.        -- Password .......................................  136
  534.        -- Path ...........................................  136
  535.        -- PathPart .......................................  137
  536.        -- PauseAfterExecute ..............................  137
  537.        -- Pi .............................................  137
  538.        -- PickFile .......................................  137
  539.        -- PickMany .......................................  138
  540.        -- PickManyPositions ..............................  138
  541.        -- PickOne ........................................  138
  542.        -- PickPosition ...................................  138
  543.        -- Port ...........................................  139
  544.        -- Pos ............................................  139
  545.        -- PosInList ......................................  139
  546.        -- PosInSortedList ................................  139
  547.        -- Power ..........................................  140
  548.        -- Pred ...........................................  140
  549.        -- Print ..........................................  140
  550.        -- PrinterName ....................................  140
  551.        -- Println ........................................  140
  552.        -- PrintScreen ....................................  140
  553.        -- Procedure ......................................  141
  554.        -- PullMenu .......................................  142
  555.        -- Qualifier ......................................  142
  556.        -- Random .........................................  143
  557.        -- ReadAscTextFile ................................  143
  558.        -- ReadDirectory ..................................  143
  559.        -- ReadEnv ........................................  144
  560.        -- ReadEnvironment ................................  144
  561.        -- ReadFileBlock ..................................  144
  562.        -- ReadKey ........................................  145
  563.        -- Readln .........................................  145
  564.        -- ReadTextFile ...................................  145
  565.        -- Real ...........................................  146
  566.        -- Reboot .........................................  146
  567.        -- ReleaseDate ....................................  146
  568.        -- Repeat .........................................  146
  569.        -- ResizeWindow ...................................  147
  570.        -- Return .........................................  147
  571.        -- ReturnCode .....................................  147
  572.        -- Right ..........................................  147
  573.        -- RmDir ..........................................  148
  574.        -- RollWindow .....................................  148
  575.  
  576.  
  577.  
  578.    Computer Tyme MarxMenu * Table of Contents              Page 10
  579.    _______________________________________________________________
  580.  
  581.  
  582.        -- Run ............................................  149
  583.        -- SavePosition ...................................  149
  584.        -- ScreenHeight ...................................  149
  585.        -- ScreenWidth ....................................  149
  586.        -- ScrollLock .....................................  150
  587.        -- ScrollMove .....................................  150
  588.        -- Second .........................................  150
  589.        -- SecondOf .......................................  150
  590.        -- Security .......................................  150
  591.        -- Segment ........................................  150
  592.        -- SelectPath .....................................  151
  593.        -- SerialPorts ....................................  151
  594.        -- SetArraySize ...................................  151
  595.        -- SetEnv .........................................  151
  596.        -- SetTopWindow ...................................  152
  597.        -- SetWindowUnder .................................  152
  598.        -- Shadow .........................................  152
  599.        -- ShadowColor ....................................  152
  600.        -- ShadowPosition .................................  152
  601.        -- Shared .........................................  153
  602.        -- ShellEnvironment ...............................  153
  603.        -- Shl ............................................  153
  604.        -- Shr ............................................  153
  605.        -- Sin ............................................  153
  606.        -- SingleLineBox ..................................  153
  607.        -- SmallShadow ....................................  154
  608.        -- SortArray ......................................  154
  609.        -- Sound ..........................................  154
  610.        -- SplitPath ......................................  154
  611.        -- Sqr ............................................  154
  612.        -- StandardIO .....................................  155
  613.        -- Str ............................................  155
  614.        -- StuffAKey ......................................  155
  615.        -- StuffKBD .......................................  155
  616.        -- StuffKeyboardNow ...............................  155
  617.        -- Succ ...........................................  156
  618.        -- Suggest ........................................  156
  619.        -- TextBackground .................................  156
  620.        -- TextColor ......................................  156
  621.        -- TextMode .......................................  156
  622.        -- TextPos ........................................  157
  623.        -- TextSeek .......................................  157
  624.        -- Then ...........................................  157
  625.        -- TimeOf .........................................  157
  626.        -- Timer ..........................................  157
  627.        -- TimeSeparator ..................................  157
  628.        -- TimeString .....................................  158
  629.        -- TMaxActiveTasks ................................  158
  630.        -- TMaxCreateTask .................................  158
  631.        -- TMaxCut ........................................  158
  632.        -- TMaxDeleteTask .................................  158
  633.        -- TMaxDirectSwitching ............................  158
  634.  
  635.  
  636.  
  637.    Computer Tyme MarxMenu * Table of Contents              Page 11
  638.    _______________________________________________________________
  639.  
  640.  
  641.        -- TMaxEMSMemLim ..................................  159
  642.        -- TMaxGetPasteBuffer .............................  159
  643.        -- TMaxInstalled ..................................  159
  644.        -- TMaxMaxTasks ...................................  159
  645.        -- TMaxPaste ......................................  159
  646.        -- TMaxReadTaskInfo ...............................  159
  647.        -- TMaxResult .....................................  160
  648.        -- TMaxReturnCount ................................  160
  649.        -- TMaxSetPasteBuffer .............................  160
  650.        -- TMaxSwitchTasks ................................  160
  651.        -- TMaxSwitchToManager ............................  160
  652.        -- TMaxTakeOver ...................................  160
  653.        -- TMaxTaskOpenFiles ..............................  161
  654.        -- TMaxThisTask ...................................  161
  655.        -- TMaxVersion ....................................  161
  656.        -- Today ..........................................  161
  657.        -- Tomorrow .......................................  161
  658.        -- Tone ...........................................  162
  659.        -- TotalDiskSpace .................................  162
  660.        -- TotalEms .......................................  162
  661.        -- Trim ...........................................  162
  662.        -- TrueName .......................................  163
  663.        -- UnBlank ........................................  163
  664.        -- UniqueFileName .................................  163
  665.        -- Until ..........................................  164
  666.        -- UpperCase ......................................  164
  667.        -- UpperCaseOnly ..................................  164
  668.        -- UseArrows ......................................  164
  669.        -- UseCommand .....................................  165
  670.        -- UsedDiskSpace ..................................  165
  671.        -- UseNovPassword .................................  165
  672.        -- Value ..........................................  165
  673.        -- Var ............................................  166
  674.        -- VarType ........................................  166
  675.        -- VideoMode ......................................  166
  676.        -- VideoPage ......................................  166
  677.        -- ViewArray ......................................  166
  678.        -- ViewTextFile ...................................  166
  679.        -- VinCheckService ................................  167
  680.        -- VinesInt .......................................  167
  681.        -- VinesLoaded ....................................  167
  682.        -- VinUserName ....................................  167
  683.        -- VinSerialNumber ................................  168
  684.        -- Volume .........................................  168
  685.        -- Wait ...........................................  168
  686.        -- WaitOrKbdReady .................................  168
  687.        -- WhereX .........................................  168
  688.        -- WhereXAbs ......................................  168
  689.        -- WhereY .........................................  168
  690.        -- WhereYAbs ......................................  169
  691.        -- While ..........................................  169
  692.        -- WholeFileNames .................................  169
  693.  
  694.  
  695.  
  696.    Computer Tyme MarxMenu * Table of Contents              Page 12
  697.    _______________________________________________________________
  698.  
  699.  
  700.        -- Window .........................................  169
  701.        -- WindowHeight ...................................  169
  702.        -- WindowWidth ....................................  169
  703.        -- WinX ...........................................  170
  704.        -- WinY ...........................................  170
  705.        -- Write ..........................................  170
  706.        -- WriteCenter ....................................  170
  707.        -- WriteFileBlock .................................  170
  708.        -- Writeln ........................................  170
  709.        -- WriteTextFile ..................................  170
  710.        -- WriteVertical ..................................  171
  711.        -- Xor ............................................  171
  712.        -- Year ...........................................  171
  713.        -- YearOf .........................................  171
  714.        String Constants ..................................  172
  715.        Time and Date Constants ...........................  172
  716.        Video Constants ...................................  173
  717.        Color Constants ...................................  173
  718.        Boolean Constants .................................  173
  719.        Conditional Statements ............................  173
  720.        Environment Variables used by MarxMenu ............  174
  721.        Command Categories ................................  175
  722.        -- Misc Commands ..................................  176
  723.        -- Math Commands ..................................  176
  724.        -- Float Commands .................................  177
  725.        -- String Commands ................................  178
  726.        -- Variable Commands ..............................  179
  727.        -- Boolean Commands ...............................  179
  728.        -- Array Commands .................................  180
  729.        -- Memory Commands ................................  181
  730.        -- Novell Commands ................................  181
  731.        -- MSNet Commands .................................  183
  732.        -- Vines Commands .................................  183
  733.        -- Time Commands ..................................  184
  734.        -- Execution Commands .............................  185
  735.        -- Display Commands ...............................  185
  736.        -- Color Commands .................................  187
  737.        -- Environment Commands ...........................  187
  738.        -- System Commands ................................  188
  739.        -- File Commands ..................................  188
  740.        -- Ansi Commands ..................................  189
  741.        -- Printer Commands ...............................  189
  742.        -- International Commands .........................  190
  743.        -- DesqView Commands ..............................  190
  744.        -- Conditional Commands ...........................  190
  745.        -- Keyboard Commands ..............................  191
  746.        -- MouseControl Commands ..........................  191
  747.        -- Music Commands .................................  191
  748.        -- TaskMax Commands ...............................  191
  749.  
  750.  
  751.  
  752.    Computer Tyme MarxMenu Users Manual                     Page 1
  753.    _______________________________________________________________
  754.  
  755.  
  756.    COPYRIGHT   COPYRIGHT   COPYRIGHT
  757.  
  758.    This manual is copyrighted material and all rights are reserved.
  759.    MarxMenu is a programming language which describes to the computer what
  760.    it is supposed to do. Even though some of the individual words in
  761.    MarxMenu are used in other programming languages, I claim a copyright on
  762.    the collection of words which make up the MarxMenu language. I therefore
  763.    consider it an infringement of my CopyRight to create a software product
  764.    which uses the MarxMenu language, or translates MarxMenu source code,
  765.    without purchasing a license to do so.
  766.  
  767.    The combinations of definitions of commands in this manual constitute a
  768.    copyrighted work. Any publication which describes a computer language
  769.    for which the MarxMenu command set is a subset is a violation of the
  770.    copyright of this software and this written manual.
  771.  
  772.    In other words, don't try to clone MarxMenu.
  773.  
  774.    LICENSE AGREEMENT:   LICENSE AGREEMENT:   LICENSE AGREEMENT:
  775.  
  776.    You are licensed to use this program on a single CPU or workstation. If
  777.    you are running on a network, you are required to license a separate
  778.    copy for each workstation or a file server license for each file server.
  779.    If you are running on a multiuser operating system such as Concurrent
  780.    DOS, you are required to license a copy for each workstation. Everyone
  781.    who uses this menu, must license a copy unless several people share the
  782.    same workstation.
  783.  
  784.    This software is licensed and not sold. The license begins when Computer
  785.    Tyme receives payment in full. You may not transfer, sell, sublease or
  786.    rent this software without the written consent of Computer Tyme. You are
  787.    not allowed to distribute MarxMenu in runtime form with software you
  788.    developed unless it is in combination with a paid for copy of MarxMenu,
  789.    or you have made special arrangements in writing with Computer Tyme to
  790.    do so.
  791.  
  792.    Use of this product constitutes your acceptance of the terms and
  793.    conditions of this license and of my copyright and your agreement to
  794.    abide by these terms and conditions.
  795.  
  796.    WARRANTY:   WARRANTY:   WARRANTY:
  797.  
  798.    The warranty is limited to the diskettes to be machine readable for a
  799.    period of 30 days after purchase. Although we try hard to write perfect
  800.    software that has no bugs, we do not guarantee that. We also do not
  801.    guarantee that this product is fit for every purpose and we are not
  802.    liable for any damages that might occur from use of this product. This
  803.    agreement is governed by the laws of the State of Missouri.
  804.  
  805.  
  806.  
  807.    Computer Tyme MarxMenu Users Manual                     Page 2
  808.    _______________________________________________________________
  809.  
  810.  
  811.    ACKNOWLEDGMENTS:   ACKNOWLEDGMENTS:   ACKNOWLEDGMENTS:
  812.  
  813.    I would like to thank the following people for making this product
  814.    possible:
  815.  
  816.    Joe Smith and Kevin Moore for helping write this manual. My wife Vicki
  817.    for being good to me and helping with revisions and editing.
  818.  
  819.    The Computer Tyme staff for being the best employees in the world.
  820.  
  821.    Borland International for writing Turbo Pascal and keeping it bug free
  822.    and well supported.
  823.  
  824.    TurboPower Software for their very powerful extensions to Turbo Pascal
  825.    and their well written, well supported product.
  826.  
  827.    Semware for TEdit and QEdit, their full screen editors.
  828.  
  829.    All users who actually paid for this product so that we may continue to
  830.    eat.
  831.  
  832.    Those of you who have pointed out bugs and made suggestions to improve
  833.    our product.
  834.  
  835.    TRADEMARKS   TRADEMARKS   TRADEMARKS
  836.  
  837.    MarxMenu, DOS ToolBox, Directory Master, and The Network Survival Kit
  838.    are trademarks of Computer Tyme.
  839.  
  840.     QEdit and TEdit are trademarks of SemWare.
  841.     Lotus is a registered trademark of Lotus Development.
  842.     Wordstar is a registered trademark of MicroPro International.
  843.     Smart Software is a trademark of Informix.
  844.     MS-DOS is a trademark of Microsoft.
  845.     Concurrent DOS and DR-DOS are trademarks of Digital Research.
  846.     Turbo Pascal is a trademark of Borland International.
  847.     OPRO and TPRO are trademarks of TurboPower Software.
  848.     Netware and Novell are trademarks of Novell.
  849.     DesqView and QEMM are trademarks of Quarterdeck.
  850.     IBM and OS/2 are trademarks of International Business Machines.
  851.  
  852.     Created using Turbo Pascal
  853.     Copyright 1983-90 by Borland International
  854.  
  855.    THE MARXMENU NAME   THE MARXMENU NAME   THE MARXMENU NAME
  856.  
  857.    When I first wrote this program my friends referred to it as Marc's
  858.    Menu. That's where the name MarxMenu came from. It has nothing to do
  859.    with either Carl or Groucho Marx.
  860.  
  861.  
  862.  
  863.    Computer Tyme MarxMenu Users Manual                     Page 3
  864.    _______________________________________________________________
  865.  
  866.  
  867.    TECHNICAL SUPPORT   TECHNICAL SUPPORT   TECHNICAL SUPPORT
  868.  
  869.    Technical support for MarxMenu is provided several ways. The first is by
  870.    calling our voice line 1-417-866-1222. We would ask that you not call
  871.    the 800 number as that is for orders and ordering information only.
  872.  
  873.    We have several support staff and will try to answer your questions as
  874.    quickly and efficiently as possible. We at Computer Tyme look at
  875.    technical support as an opportunity to improve our product.
  876.  
  877.    We also have a 24 hour BBS system. This allows users with modems to
  878.    leave messages about support issues. There are several user uploaded
  879.    menus here and it serves as a forum for MarxMenu users to share ideas
  880.    and techniques.
  881.  
  882.    Our BBS number is 1-417-866-1665. It supports 2400 baud but is 1200 baud
  883.    compatible. Use 8 bits, no parity, 1 stop bit (8N1). You will also need
  884.    to set your terminal emulation mode to ANSI or VT100. Do not try to call
  885.    my BBS with 7 bits or even parity. It won't work.
  886.  
  887.    On our BBS are additional sample menu files that other MarxMenu users
  888.    like yourself have uploaded. We encourage you to share your work with
  889.    others so that yet more MarxMenu users can benefit.
  890.  
  891.    We are also available on Compuserve. ID# 76505,1120.
  892.  
  893.    We also offer a Fast Update Service which includes regular upgrades sent
  894.    to you automatically as we come out with them. This doesn't mean every
  895.    version of MarxMenu, but every so often after making several
  896.    improvements and the product is at a stable point. The Fast Update
  897.    Service includes special access to our support BBS.
  898.  
  899.    This service is for the very fierce MarxMenu user who has to have the
  900.    "Latest and Greatest" all the time.
  901.  
  902.    INSTALLATION   INSTALLATION   INSTALLATION
  903.  
  904.    You may wish to copy the MarxMenu system into it's own subdirectory
  905.    called MARX to keep the files better organized. However, this is not
  906.    necessary. Copy all the disks that come with MarxMenu into a directory
  907.    on your hard disk or network.
  908.  
  909.    If you do put the menu system in a subdirectory, it must be path
  910.    accessible. That is, you must have a path statement in your AUTOEXEC.BAT
  911.    file that includes the directory where the menu system resides. A
  912.    typical path statement might look like this:
  913.  
  914.     PATH=C:\;C:\DOS;C:\MARX;
  915.  
  916.  
  917.  
  918.    Computer Tyme MarxMenu Users Manual                     Page 4
  919.    _______________________________________________________________
  920.  
  921.  
  922.    Copy all your Computer Tyme disks to the hard disk or network and type
  923.    INSTALL. Be sure to have your serial number and access code ready. When
  924.    it gets done, you can run some of the sample menus by typing MARX
  925.    <menu>.
  926.  
  927.     -------- V E R Y * I M P O R T A N T --------
  928.  
  929.    MarxMenu requires up to 100 bytes of free environment space. It won't
  930.    run properly without it. The way you get more environment space is to
  931.    add a SHELL command to your CONFIG.SYS file.
  932.  
  933.     SHELL=COMMAND.COM /P /E:nnn
  934.  
  935.    Where NNN is the number of bytes for the environment to reserve. Note
  936.    that if you are running DOS 3.1 then NNN is the number of 16 byte blocks
  937.    to allocate for the environment.
  938.  
  939.    For DOS 3.2 or later:
  940.  
  941.     SHELL=COMMAND.COM /P /E:400
  942.  
  943.    For DOS 3.1:
  944.  
  945.     SHELL=COMMAND.COM /P /E:25
  946.  
  947.    If MarxMenu gives you an environment space error, this is where you go
  948.    to fix it.
  949.  
  950.    INSTALLING THE NETWORK SURVIVAL KIT   INSTALLING THE NETWORK SURVIVAL KIT   INSTALLING THE NETWORK SURVIVAL KIT
  951.  
  952.    The Network Survival Kit is installed by copying the distribution disk
  953.    into a directory on your server and typing INSTALL. It will unpack into
  954.    about 2.8 megs of programs and documentation. Be sure to print out the
  955.    DOC files on any programs you are interested in and print out the
  956.    MARXREAD.ME file.
  957.  
  958.    Make sure you do not run the install from the floppy disk.
  959.  
  960.    If you are running the Network Survival Kit on several file servers that
  961.    are bridged together, and you have pruchased several single server
  962.    MarxMenus, be sure to not to install the same serial number on more than
  963.    one file server. MarxMenu is smart enough to detect this.
  964.  
  965.    If you have a multi-server version of MarxMenu, then you can install
  966.    MarxMenu on several fileservers without getting a license violation
  967.    error.
  968.  
  969.  
  970.  
  971.    Computer Tyme MarxMenu Users Manual                     Page 5
  972.    _______________________________________________________________
  973.  
  974.  
  975.    OVERVIEW OF THE MARXMENU SYSTEM   OVERVIEW OF THE MARXMENU SYSTEM   OVERVIEW OF THE MARXMENU SYSTEM
  976.  
  977.    MarxMenu is not just another fill-in-the-blank menu system. It is a menu
  978.    programming language and job control language. It gives you total
  979.    freedom to do whatever you want, but total freedom has a price. You will
  980.    need to know and understand how to use a text editor. This isn't
  981.    difficult if you are familiar with using a word processor. And you will
  982.    need to have a basic understanding of DOS and how batch files work.
  983.  
  984.    With a text editor you can create a menu file which is a text file with
  985.    an MNU extension. Or, you can copy and then modify the text file
  986.    QUICK.MNU which displays the menus you see when MarxMenu is executed.
  987.    This text file contains a set of instructions for MarxMenu to follow.
  988.    MarxMenu will then read your menu file and run the instructions.
  989.  
  990.     A menu file might look as follows:
  991.  
  992.     DrawBox 31 5 18 4
  993.     UseArrows
  994.     Writeln   '  W - WordStar'
  995.     Write     '  L - Lotus'
  996.  
  997.     OnKey 'W'
  998.        CD\WORDSTAR
  999.        WS
  1000.  
  1001.     OnKey 'L'
  1002.        CD\LOTUS
  1003.        LOTUS
  1004.  
  1005.    The above example is a fully working MarxMenu program. Just because
  1006.    MarxMenu has 600 commands doesn't mean you have to use them all. The
  1007.    reason there are so many commands is that people keep calling me up and
  1008.    asking if I can add such and such. Most of the time I do. That's why the
  1009.    manual gets behind sometimes.
  1010.  
  1011.    The instructions must be from the vocabulary of words that MarxMenu
  1012.    understands. These words make up the command list included in this
  1013.    manual. They must be used precisely as the instructions in this manual
  1014.    tell you to use them. This process is called programming.
  1015.  
  1016.    I know that for many of you the word programming is a scary word. Put
  1017.    your fears at ease, MarxMenu is one of the easiest programming languages
  1018.    there is. It is a little harder than writing batch files and a lot
  1019.    easier than Basic. It requires a working knowledge of DOS and an
  1020.    understanding of writing batch files as explained in your DOS manual.
  1021.  
  1022.  
  1023.  
  1024.    Computer Tyme MarxMenu Users Manual                     Page 6
  1025.    _______________________________________________________________
  1026.  
  1027.  
  1028.    The point that I want to make is, do not let the fear of learning and
  1029.    the fear of programming prevent you from learning to write your own
  1030.    menus. If you have never touched a computer before and are sitting down
  1031.    with your first PC, read the manuals first. Become familiar with the
  1032.    MS-DOS operating system. Learn how to write batch files, make
  1033.    subdirectories, copy files, format floppies, etc. If you don't
  1034.    understand something, ask a friend. All of us had to learn sometime, and
  1035.    there is no such thing as a stupid question.
  1036.  
  1037.    After you have mastered some of the basic concepts of the operating
  1038.    system, then learn MarxEdit. This is the text editor included with your
  1039.    MarxMenu program. Use it to write your own batch files. Then attempt to
  1040.    write your own menus by modifying the sample menus (files with a MNU
  1041.    extension) which come with MarxMenu. Print these menus and study them,
  1042.    referring to this manual for help on command definitions. You do not
  1043.    have to completely understand them to start making changes. Programming
  1044.    is a trial and error process.
  1045.  
  1046.    A computer, like a musical instrument, is only as good as the player.
  1047.    The more you learn about it the more you'll find it can do. In fact, a
  1048.    computer can help raise your effective IQ as you learn the disciplines
  1049.    of logic and reason. As a hammer is a tool of the hand, enhancing your
  1050.    physical strength, a computer is a tool of the mind, enhancing your
  1051.    mental strength. You will learn that as you develop a relationship with
  1052.    your computer, that you will be able to process information in ways you
  1053.    never dreamed.
  1054.  
  1055.    MarxMenu is an excellent learning tool. By the time you become
  1056.    proficient with the menu language, you will have learned the fundamental
  1057.    concepts behind the MS-DOS operating system. You will find yourself
  1058.    going back and forth between this manual and the DOS manual that came
  1059.    with your computer. When you master the language, you will have enough
  1060.    computing skills to be a real resource in your office environment. In
  1061.    this day and age, knowing how to "make the damn things work" is a key in
  1062.    moving up the corporate ladder.
  1063.  
  1064.    If you have sufficient excess income to afford a personal computer, or
  1065.    are in a job that provides you with a workstation, you are smart enough
  1066.    to learn this program. All it requires is that you take the time. You
  1067.    can do it. It is worth your time, and you will make up the time spent in
  1068.    the results you'll get. Good luck and enjoy.
  1069.  
  1070.  
  1071.  
  1072.    Computer Tyme MarxMenu Users Manual                     Page 7
  1073.    _______________________________________________________________
  1074.  
  1075.  
  1076.    WHAT MARXMENU DOES   WHAT MARXMENU DOES   WHAT MARXMENU DOES
  1077.  
  1078.    So with hundreds of menus on the market, what makes this one so great.
  1079.    Well, let me tell you about it. MarxMenu is a menu language rather than
  1080.    a fill in the blank kind of menu. MarxMenu gives you total control of
  1081.    your computer system.
  1082.  
  1083.    It is also a job control language allowing you to program processes too
  1084.    difficult to do with batch files. MarxMenu can be used to do anything
  1085.    from overnight batch job processing to generating control scripts for
  1086.    mainframes.
  1087.  
  1088.    Because of it's simple syntax, MarxMenu makes an excellent teaching
  1089.    language putting more programming power in the hands of the student
  1090.    programmer than any other programming language.
  1091.  
  1092.    As a menu, MarxMenu can be as simple or as complex as you want. If you
  1093.    want simple, nothing is easier. If you want POWER, nothing is more
  1094.    powerful. If you want to get really weird, MarxMenu can do really wierd.
  1095.  
  1096.    So if you want the menu to remind you to go vote, MarxMenu knows when
  1097.    the first Teusday after the first Monday in November on even years is.
  1098.    If you are into Astrology, and you want certain menu items to appear
  1099.    only if Mars is in the right place in the sky, MarxMenu can calculate
  1100.    the orbit of Mars for you.
  1101.  
  1102.    MarxMenu can be used to program games, write running software demos and
  1103.    online tutorial programs. It can be used to write testing programs. It
  1104.    can be used to write custom software installation programs. It can be
  1105.    used to assist other applications to make other software more network
  1106.    friendly.
  1107.  
  1108.    MarxMenu has a compiler for high speed execution. Even very large menus
  1109.    come up in under 4 seconds on a 4.77mhz IBM XT on an ArcNet lan. The
  1110.    compiler also provides security in that you can keep your source files
  1111.    separate so no one can alter the menu files.
  1112.  
  1113.  
  1114.  
  1115.    Computer Tyme MarxMenu Users Manual                     Page 8
  1116.    _______________________________________________________________
  1117.  
  1118.  
  1119.    THE MARX.BAT FILE   THE MARX.BAT FILE   THE MARX.BAT FILE
  1120.  
  1121.    In order for MarxMenu to work, a MARX.BAT file must be created. This is
  1122.    done by typing INSTALL. The first thing that INSTALL does is unpack the
  1123.    compressed menu files and documentation files. Then it will bring up the
  1124.    installation menu.
  1125.  
  1126.    The MARX.BAT file looks like this:
  1127.  
  1128.     @ECHO OFF
  1129.     C:\MARX\MARXMENU.EXE %1
  1130.     %MXCMD%
  1131.     %0 %1
  1132.  
  1133.    The first line of MARX.BAT turns the echo off. This may be changed to
  1134.    ECHO ON for debugging purposes. PAUSE commands can be inserted to debug
  1135.    a menu. This allows you to see what's going on.
  1136.  
  1137.    The second line of MARX.BAT runs MARXMENU.EXE. The second parameter %1
  1138.    is the name of the menu file to run. A third parameter can be added to
  1139.    tell MarxMenu to use a specific directory for creating temporary batch
  1140.    files. Otherwise MarxMenu will create temporary batch files in the same
  1141.    directory as MARXMENU.EXE.
  1142.  
  1143.    When the user selects a program to run, MarxMenu writes a temporary
  1144.    batch file which contains within it the commands to run the program.
  1145.    Then MarxMenu writes a command to the environment variable MXCMD to
  1146.    execute the temporary batch file and exits.
  1147.  
  1148.    What it writes depends on the version of DOS you are running. If you are
  1149.    running DOS 3.3 or later, MXCMD is set to CALL <batch>. If you are
  1150.    running an earlier version of DOS then MXCMD is set to COMMAND /C
  1151.    <batch>.
  1152.  
  1153.    Whatever command is written to MXCMD is executed in line 3. This usually
  1154.    calls the temporary batch file that MarxMenu created. This executes your
  1155.    program and returns to MARX.BAT.
  1156.  
  1157.    Line four jumps back to the beginning of the batch file and starts all
  1158.    over. %0 is MARX.BAT and %1 is the name of the menu you are running.
  1159.  
  1160.             MARX.BAT
  1161.             --------   +--MarxMenu Creates--+
  1162.      +----> @ECHO OFF  |                    |
  1163.      |      MARXMENU.EXE %1                 |
  1164.      |      %MXCMD% >--+                    +-> $MX00000.BAT
  1165.      | +--> MARX %1 +  |                        ------------
  1166.      | |            |  +----------------------> CD\WORDSTAR
  1167.      +-|------<-----+                           WS --+
  1168.        |                                             |
  1169.        +-------------------------------------------<-+
  1170.  
  1171.  
  1172.  
  1173.    Computer Tyme MarxMenu Users Manual                     Page 9
  1174.    _______________________________________________________________
  1175.  
  1176.  
  1177.     Note: MarxMenu sets MXCMD = CALL $MX00000.BAT
  1178.  
  1179.    You can also tell MarxMenu where to put it's temporary batch files by
  1180.    setting an environment variable TEMP to point to a temporary file
  1181.    directory.
  1182.  
  1183.     Example: SET TEMP=F:\TMPFILES
  1184.  
  1185.    This is compatible with the way DOS 5 and Windows uses temp files.
  1186.  
  1187.    When you exit the menu system. MarxMenu sets MXCMD to MXSTOP. This jumps
  1188.    to a batch file called MXSTOP which gets you out of MARX.BAT. MXSTOP.BAT
  1189.    can be modified to control what happens when MarxMenu is exited.
  1190.  
  1191.    The default MXSTOP.BAT file is as follows.
  1192.  
  1193.     SET MXCMD=
  1194.     SET KSV=
  1195.     REM You can control menu exiting with this file!
  1196.  
  1197.    Note that by adding your own commands to MXSTOP that you can control
  1198.    what happens when you exit. You could loop right back to the menu if you
  1199.    want. Or, you could force a controlled network logoff.
  1200.  
  1201.    I strongly recommend upgrading to DOS 3.3 or later whenever it is
  1202.    possible to do so.
  1203.  
  1204.    The name of the temporary batch file is as follows:
  1205.  
  1206.                      $MX00000.BAT
  1207.                          ||||
  1208.            Shells--------+|++--------Network Station (Hex)
  1209.                      Task Number
  1210.  
  1211.    The 5 zeros are used for single user versions of MarxMenu. On a network
  1212.    they change as follows:
  1213.  
  1214.    The last 2 zeros is the station number on the network. This is either
  1215.    read directly from the shell, if you are using Novell, or from the
  1216.    environment variable STATION if you are on another network. The third
  1217.    zero is the task number if you are running DesqView, or from an
  1218.    environment variable TASK if you are running some other multitasker.
  1219.  
  1220.    The second zero is replaced by one less than the number of COMMAND.COM
  1221.    shells you are running. This way if you run COMMAND.COM under MarxMenu
  1222.    and then run MarxMenu again under that, it doesn't get lost when you
  1223.    exit.
  1224.  
  1225.    The first zero is for future expansion. In case something comes along
  1226.    that I haven't thought of.
  1227.  
  1228.  
  1229.  
  1230.    Computer Tyme MarxMenu Users Manual                     Page 10
  1231.    _______________________________________________________________
  1232.  
  1233.  
  1234.    If you want to do custom tricks, MarxMenu has an internal variable
  1235.    called MxCmd. Setting this to your own command overrides the way
  1236.    MarxMenu would normally use it.
  1237.  
  1238.    But now you ask, does MarxMenu leave a trail of batch files that will
  1239.    clutter up my drive or network? Not at all. MarxMenu keeps using the
  1240.    same names over and over again. If a user crashed his system, it might
  1241.    leave a batch file but it would be overwritten the next time he used the
  1242.    menu. Not only that, all batch files can be kept in the same directory
  1243.    so cleaning up is as simple as typing DEL $MX*.BAT!
  1244.  
  1245.    By writing to the MxCmd variable you can run an EXE or COM file directly
  1246.    without having to create another batch file.
  1247.  
  1248.     Example:
  1249.        OnKey 'M'
  1250.           |MxCmd = 'RAMMAP'
  1251.  
  1252.    This runs RamMap directly from the MARX.BAT file.
  1253.  
  1254.    Another trick is to run another batch file without the CALL statement.
  1255.    This creates a one way jump to another batch file.
  1256.  
  1257.    Another debugging feature. You can change the first line of the MARX.BAT
  1258.    file as follows:
  1259.  
  1260.     @ECHO %MXECHO%
  1261.  
  1262.    This allows you to turn the echo on for debugging purposes by typing:
  1263.  
  1264.     SET MXECHO=ON
  1265.  
  1266.    This way you don't have to change the MARX.BAT file to debug. If you use
  1267.    this, make sure that MXECHO is set to either ON or OFF.
  1268.  
  1269.    DROPTO.BAT   DROPTO.BAT   DROPTO.BAT
  1270.  
  1271.    If you are going to run a shell like COMMAND.COM under MarxMenu it is
  1272.    sometimes better to use DROPTO.BAT which is created during the install
  1273.    process. DropTo allows you to jump from the temporary batch file that
  1274.    MarxMenu creates to DropTo, which deletes the temporary batch file and
  1275.    executes the rest of the command line.
  1276.  
  1277.     Usage: DROPTO %0 COMMAND.COM
  1278.  
  1279.    If you are using DropTo inside a MarxMenu, the %0 is automatically added
  1280.    for you.
  1281.  
  1282.     Example:
  1283.        OnKey 'C'
  1284.           DropTo COMMAND.COM
  1285.  
  1286.  
  1287.  
  1288.    Computer Tyme MarxMenu Users Manual                     Page 11
  1289.    _______________________________________________________________
  1290.  
  1291.  
  1292.     DROPTO.BAT
  1293.     ----------
  1294.     DEL %1
  1295.     SET KSV=
  1296.     SET MXCMD=
  1297.     %2 %3 %4 %5 %6 %7 %8 %9
  1298.  
  1299.    Here's how it works:
  1300.  
  1301.         $MX00000.BAT <------deletes this file--------+
  1302.         ------------                                 |
  1303.         DROPTO %0 COMMAND.COM ------------> DEL %1 >-+
  1304.                                             SET KSV=
  1305.                                             SET MXCMD=
  1306.                  %2 executes COMMAND.COM--> %2 %3 %4 %5 %6 %7 %8 %9
  1307.  
  1308.    The advantages are that the temporary batch file is eliminated so if the
  1309.    user never returns to the menu, it leaves no temporary file to clutter
  1310.    up the drive. Also, DROPTO.BAT becomes the pending batch file that is
  1311.    running rather than the temporary file.
  1312.  
  1313.    SUPPORT FOR EARLY DOS VERSIONS   SUPPORT FOR EARLY DOS VERSIONS   SUPPORT FOR EARLY DOS VERSIONS
  1314.  
  1315.    There are two main differences between DOS versions earlier than 3.3 and
  1316.    versions 3.3 and above. One is the CALL command for batch files and the
  1317.    other is the way you specify environment space when using COMMAND.COM.
  1318.  
  1319.    I have enhanced the support for early DOS versions (3.1, 3.2). MarxMenu
  1320.    executes COMMAND /C /E:nn (batchfile) >NUL to have one batch file call
  1321.    another. The first two lines of the batch files created are as follows:
  1322.  
  1323.     ECHO OFF
  1324.     CTTY CON
  1325.     ....
  1326.  
  1327.    This eliminates the ECHO OFF from being seen.
  1328.  
  1329.    Also whenever possible, when MarxMenu loads up a copy of COMMAND.COM, it
  1330.    adds the /E:nnn command to set the environment space to the same as that
  1331.    of the Master Environment. In version 3.1 it is translated to paragraphs
  1332.    instead of bytes.
  1333.  
  1334.    One thing to note in early versions of DOS. If you run a batch file
  1335.    under COMMAND /C and your batch file has SET commands to set environment
  1336.    variables, the changes you make will disappear as soon as you get back
  1337.    to MARX.BAT. Why? Because you loaded another COMMAND.COM and the SET
  1338.    commands set its environment. When this COMMAND.COM ends, it takes its
  1339.    environment with it. Under DOS 3.3 or later, which uses CALL instead of
  1340.    another shell, the SET commands live. (Yet another reason to upgrade).
  1341.  
  1342.  
  1343.  
  1344.    Computer Tyme MarxMenu Users Manual                     Page 12
  1345.    _______________________________________________________________
  1346.  
  1347.  
  1348.    ABOUT ENVIRONMENT VARIABLES   ABOUT ENVIRONMENT VARIABLES   ABOUT ENVIRONMENT VARIABLES
  1349.  
  1350.    I've been talking a lot about environment variables. Some of you out
  1351.    there in novice land don't know what an environment variable is. Many
  1352.    others don't know the intricate secrets handed down from the Great DOS
  1353.    Masters who know all the intricate undocumented features of DOS.
  1354.  
  1355.    Your DOS shell, COMMAND.COM owns an area of memory called the Master
  1356.    Environment. It contains strings in the form Name=Value. Included among
  1357.    those strings are your COMSPEC and your PATH. Your COMSPEC tells DOS and
  1358.    other programs where to find COMMAND.COM. Your PATH tells DOS and other
  1359.    programs what directories to search when loading programs. Another
  1360.    common environment variable is your PROMPT. This controls what your DOS
  1361.    prompt will look like.
  1362.  
  1363.    Environment variables are commonly set using the SET command. This is
  1364.    done by typing SET NAME=VALUE.
  1365.  
  1366.     Example:
  1367.        SET COLOR=BLUE
  1368.  
  1369.    So what does this actually do? Actually nothing, unless you have a
  1370.    program that reads the environment variables that is looking for one
  1371.    called COLOR. This way, environment variables can be used to leave
  1372.    messages to other programs and control how they behave.
  1373.  
  1374.    Besides leaving messages, environment variables can be accessed by batch
  1375.    files. If you use %NAME% in a batch file, DOS will substitute the VALUE
  1376.    of the variable for the %NAME% expression. And this feature is important
  1377.    to MarxMenu's operation.
  1378.  
  1379.    MarxMenu uses an environment variable called MXCMD. In the MARX.BAT file
  1380.    the third line is %MXCMD%. So MarxMenu controls MARX.BAT by writing
  1381.    values to MXCMD.
  1382.  
  1383.    In order to do this, there must be enough room in the environment for
  1384.    the command to fit. That is why you need to make sure that you have a
  1385.    SHELL command in your CONFIG.SYS to set space for MarxMenu to use.
  1386.  
  1387.    Now so far I've only talked about the Master Environment. That's the one
  1388.    that the first COMMAND.COM owns. Each program that is loaded, including
  1389.    TSRs, gets a copy of the Master Environment in its own environment. This
  1390.    is called the CURRENT Environment.
  1391.  
  1392.    One interesting feature of the Current Environment is that it is smaller
  1393.    than the Master Environment. DOS only creates enough space to hold a
  1394.    copy of the space used in the Master Environment and a little more to
  1395.    store the name of the program that is running.
  1396.  
  1397.  
  1398.  
  1399.    Computer Tyme MarxMenu Users Manual                     Page 13
  1400.    _______________________________________________________________
  1401.  
  1402.  
  1403.    If one program executes another program, the environment of the parent
  1404.    program is called the Parent Environment. You will probable never need
  1405.    to deal with the Parent Environment but MarxMenu can access it in case
  1406.    you do.
  1407.  
  1408.    Another environment is the SHELL ENVIRONMENT. This is the one that THEY
  1409.    never talk about. The one you'll never read about in any books. The one
  1410.    you'll never learn about in any DOS classes. This is the one your
  1411.    parents never mentioned.
  1412.  
  1413.    The Shell Environment is normally the same as the Master Environment.
  1414.    But, if you are running more than one level of COMMAND.COM, the Shell
  1415.    Environment is the environment of the last COMMAND.COM in memory. This
  1416.    environment is the most important environment to MarxMenu.
  1417.  
  1418.    So why load up two or more COMMAND.COMs? There are several cases where
  1419.    this could occur. One case is when you want to run COMMAND.COM as a
  1420.    program under MarxMenu. This way you can type EXIT to get back to the
  1421.    menu. If you do this and then run MarxMenu again, you have two levels of
  1422.    COMMAND.COM. In this case, the first COMMAND.COM is the Master
  1423.    Environment and the second COMMAND.COM is the Shell Environment.
  1424.  
  1425.    Another place where more than one COMMAND.COM is used is if you are
  1426.    running Microsoft Windows 3 or DesqView. Both of these programs are able
  1427.    to run a DOS shell. When you do, this is a second level of COMMAND.COM.
  1428.  
  1429.    What is important is that SET commands and %NAME% commands in batch
  1430.    files deal only with the Shell Environment and not the Master
  1431.    Environment.
  1432.  
  1433.    DEALING WITH MULTIPLE DOS SHELLS   DEALING WITH MULTIPLE DOS SHELLS   DEALING WITH MULTIPLE DOS SHELLS
  1434.  
  1435.    If you are running more than one level of COMMAND.COM (Shelling from
  1436.    Windows, DesqView, Word Perfect Office) and having environment space
  1437.    problems here's a trick. Before you load up your fancy shells, put this
  1438.    in a batch file like your AUTOEXEC.BAT.
  1439.  
  1440.     SET MXCMD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1441.  
  1442.    This variable will be trashed by MarxMenu thus freeing up the
  1443.    environment space it occupied. This will not only allow MarxMenu to run
  1444.    but may solve problems with other programs you are running that need
  1445.    environment space as well.
  1446.  
  1447.  
  1448.  
  1449.    Computer Tyme MarxMenu Users Manual                     Page 14
  1450.    _______________________________________________________________
  1451.  
  1452.  
  1453.    MARXMENU AND TSR CONTROL   MARXMENU AND TSR CONTROL   MARXMENU AND TSR CONTROL
  1454.  
  1455.    MarxMenu along with the TSR utilities that come with MarxMenu, can load
  1456.    and unload TSRs under menu control. This is handy when you want to run a
  1457.    big application and need to free up some memory to do it. Since MarxMenu
  1458.    is a 0k menu system, unloading TSRs is possible but it has it's tricks.
  1459.  
  1460.    The problem you run into is that when one batch file calls another batch
  1461.    file, the way MarxMenu normally runs, DOS creates a small batch file
  1462.    control block in memory. This control block stays in memory after the
  1463.    TSR is released creating a region of trapped memory. Although this
  1464.    memory is freed, it isn't usable.
  1465.  
  1466.    The way around it is to jump to the batch file that releases memory
  1467.    instead of calling it. This is done by setting MXCMD to the name of the
  1468.    batch file you want to run. The only problem is that when you jump to
  1469.    the other batch file, it won't automatically return to MARX.BAT. You
  1470.    must therefore end your batch file with a command bringing you back to
  1471.    MARX.BAT.
  1472.  
  1473.     MEMHOG.BAT
  1474.     -----------
  1475.     Rem UnLoad SideKick
  1476.     RELEASE SK
  1477.     CD\MEMHOG
  1478.     MEMHOG
  1479.     MARK SK
  1480.     SK
  1481.     MARX MAIN
  1482.  
  1483.    In your MAIN menu:
  1484.  
  1485.     OnKey 'H'
  1486.        |MxCmd = MEMHOG
  1487.  
  1488.    See the documentation file on the TSR utilities disk for more
  1489.    information on how to use MARK and RELEASE.
  1490.  
  1491.  
  1492.  
  1493.    Computer Tyme MarxMenu Users Manual                     Page 15
  1494.    _______________________________________________________________
  1495.  
  1496.  
  1497.    SAMPLE MENUS ON DISK   SAMPLE MENUS ON DISK   SAMPLE MENUS ON DISK
  1498.  
  1499.    The MarxMenu disk contains many sample menus for you to start with.
  1500.    Which one depends on what your needs are. Typically on a single user
  1501.    system you might start with QUICK or LEVEL1 menus.
  1502.  
  1503.    To start with the QUICK menu, copy it to a different name such as MY.MNU
  1504.    as follows:
  1505.  
  1506.     COPY QUICK.MNU MY.MNU
  1507.  
  1508.    Then edit MY.MNU with your favorite editor. You will quickly see how
  1509.    this menu works and will be able to substitute your programs for the
  1510.    ones it is set up for. You can then test and run your menu by typing
  1511.    MARX MY.
  1512.  
  1513.    If you want more of a self configuring menu you might try the LEVEL1
  1514.    menu. This menu requires no text editor coding and lets you set up menus
  1515.    interactively.
  1516.  
  1517.    On a Novell network you might start with the QUICKNOV menu or translate
  1518.    your existing Novell menus with NOVTRANS. The LOGIN menu requires a lot
  1519.    of customization for your system. I wouldn't start on this menu until
  1520.    your regular menus are written.
  1521.  
  1522.    The examples on disk show a variety of uses for MarxMenu. They can be
  1523.    used like libraries of routines to cut code from and paste into your
  1524.    application. A good way to learn MarxMenu is to print out the example
  1525.    menus and study the code.
  1526.  
  1527.    NETWORK USERS:   NETWORK USERS:   NETWORK USERS:
  1528.  
  1529.    The main thing you have to worry about on a network is to make sure that
  1530.    when MarxMenu creates a temporary batch file, that it is a different one
  1531.    for each user on the network.
  1532.  
  1533.    This is handled several ways. If you are on a Novell network, MarxMenu
  1534.    uses your station number as part of the name for the temporary batch
  1535.    file. If you are not using Novell, then you will need to set an
  1536.    environment variable STATION for each workstation on your net. Each one
  1537.    has to be a different number.
  1538.  
  1539.     Example:
  1540.        SET STATION=5
  1541.  
  1542.    You must ensure that the user has enough access rights to create
  1543.    temporary batch files in the directory selected for temporary batch
  1544.    files. One solution is to create a batch file directory and give all the
  1545.    users full access rights to it.
  1546.  
  1547.  
  1548.  
  1549.    Computer Tyme MarxMenu Users Manual                     Page 16
  1550.    _______________________________________________________________
  1551.  
  1552.  
  1553.    MarxMenu has been run on about every DOS based network that exists. If
  1554.    the network runs at all it will generally run MarxMenu. Among the
  1555.    networks that come to mind are Novell, Lantastic, Banyan, 3COM, Lan
  1556.    Manager, IBM, DECNET, ConCurrent DOS, PCMOS, and SCO VPIX. MarxMenu is
  1557.    running on networks as small as two users to as large as 20,000 users.
  1558.    In fact, the bigger your network, the more you need MarxMenu.
  1559.  
  1560.    If you are running LANTASTIC and get a "sharing violation" error when
  1561.    two people try running the menu at the same time, try setting
  1562.    MARXMENU.OVR to READ ONLY.
  1563.  
  1564.    NETWORK MENU STRATEGY   NETWORK MENU STRATEGY   NETWORK MENU STRATEGY
  1565.  
  1566.    One of the main features of MarxMenu is the ability to create "smart"
  1567.    menus. This allows you to have a single menu that everybody runs but
  1568.    each user sees different selections based on what their access rights
  1569.    are, what groups they are in, what kind of hardware is available, or
  1570.    what workstation they are on.
  1571.  
  1572.    The group access feature is a very good example of using the power of
  1573.    MarxMenu. The idea here is that for instance under Novell you would put
  1574.    users in groups and have menu selections appear based on group
  1575.    membership. Thus only the accounting department sees the payroll
  1576.    selection.
  1577.  
  1578.    On non Novell networks you can group users by having them in a text file
  1579.    list of members. Then you can read the list and test if they are in the
  1580.    list. You can also read environment variables and control choices based
  1581.    on the result.
  1582.  
  1583.    The rule with networks is to keep things as consistent and simple as
  1584.    possible. A simple well documented network is a happy network, and it
  1585.    can make the difference whether you go home on the weekends or stay at
  1586.    the office.
  1587.  
  1588.    NOVELL USERS:   NOVELL USERS:   NOVELL USERS:
  1589.  
  1590.    Novell is the most popular network on the market. We have added many
  1591.    enhancements for Novell networks to support things like logging in and
  1592.    logging out, drive mapping, group support, software metering, and status
  1593.    information.
  1594.  
  1595.    Although Novell is a high quality solid product it has its own
  1596.    "Personality" and many undocumented features otherwise known as bugs.
  1597.    Most people who are having trouble with MarxMenu under Novell are really
  1598.    having trouble with Novell. Quite frankly, we do more Novell support
  1599.    than we do MarxMenu support.
  1600.  
  1601.  
  1602.  
  1603.    Computer Tyme MarxMenu Users Manual                     Page 17
  1604.    _______________________________________________________________
  1605.  
  1606.  
  1607.    Having said that, I own two Novell networks. One at the lab and one at
  1608.    home and I love my networks. But, I have spent hundreds of hours
  1609.    learning all the tricks. And to save you a phone call, and me a lot of
  1610.    time, I've decided to share these tricks here in my manual.
  1611.  
  1612.    Some of these tricks are from the Great Network Gurus themselves who are
  1613.    so advanced that they no longer exist in physical form. These people
  1614.    live in another dimension of total mental existence and can only be
  1615.    reached by modem. Some of them hang out on Compuserve.
  1616.  
  1617.    I therefore strongly recommend that if you are a serious Novell user
  1618.    that you join Compuserve and hang out in the Novell section. And just
  1619.    because not everyone on Compuserve is a real person doesn't mean that
  1620.    you should feel uncomfortable asking them any question about your
  1621.    network that you need to ask.
  1622.  
  1623.    THE NOVELL MENU TRANSLATOR   THE NOVELL MENU TRANSLATOR   THE NOVELL MENU TRANSLATOR
  1624.  
  1625.    One nice bonus with Novell networks is that MarxMenu can translate your
  1626.    Novell menus to MarxMenu. This saves you the time of having to recode
  1627.    your system. What you do is type:
  1628.  
  1629.     MARXMENU NOVTRANS <menu>   <- Right Way
  1630.     MARX NOVTRANS <menu>       <- Wrong Way
  1631.  
  1632.    This translates your Novell MNU file to a MarxMenu MRX file. Your MNU
  1633.    file is unchanged. MarxMenu creates a TMP file containing the source
  1634.    code for the MRX file. Once you are satisfied with the MarxMenu file,
  1635.    you just delete the MNU file and rename the TMP file to MNU and forget
  1636.    that you ever had a Novell menu.
  1637.  
  1638.    Once the menu is translated you run it by typing MARX <menu> instead of
  1639.    MENU <menu>. MarxMenu can run Novell's menu better than Novell runs
  1640.    their own.
  1641.  
  1642.    Sometimes the translator isn't perfect and it takes a little tweaking of
  1643.    the original menu file for the translator to work properly.
  1644.  
  1645.    After you are satisfied with the translation you can then start
  1646.    enhancing your menus by editing the new translated menus. You might want
  1647.    to run QUICKNOV and look at it's features. If you like what you see you
  1648.    can use your editor to cut and paste code from QUICKNOV.MNU into your
  1649.    menus. You can also start adding NovInGroup commands to create
  1650.    conditional menus. Under MarxMenu you can have one single smart menu for
  1651.    everybody instead of a lot of individual menus.
  1652.  
  1653.  
  1654.  
  1655.    Computer Tyme MarxMenu Users Manual                     Page 18
  1656.    _______________________________________________________________
  1657.  
  1658.  
  1659.    LOGGING OUT UNDER MENU CONTROL   LOGGING OUT UNDER MENU CONTROL   LOGGING OUT UNDER MENU CONTROL
  1660.  
  1661.    Logging out under menu control is one of the trickiest things to do. The
  1662.    problem is that as soon as LOGOUT executes, you no longer have access to
  1663.    the network. This means that if you are in a batch file, you are going
  1664.    to get a "Missing Batch File" error, unless the batch file is in the
  1665.    \LOGIN directory.
  1666.  
  1667.    Another problem with logging out is making sure that your COMSPEC is
  1668.    pointing to a COMMAND.COM that is either on the local drive or in the
  1669.    \LOGIN directory. Otherwise you will get a "Cannot load COMMAND.COM"
  1670.    error.
  1671.  
  1672.    Another problem that you need to deal with is that your PATH command
  1673.    needs to be changed so that it doesn't refer to mapped drives that are
  1674.    no longer accessable.
  1675.  
  1676.    If you are logging off with a batch file, the batch file must be in the
  1677.    login directory or a local drive. If it is in the login directory your
  1678.    current drive must be the first network drive (usually F:) and this
  1679.    drive must not be map rooted to any directory.
  1680.  
  1681.    What you need to do is create a batch file in the \LOGIN directory
  1682.    called OFF.BAT.
  1683.  
  1684.     Example: F:\LOGIN\OFF.BAT
  1685.  
  1686.     SET COMSPEC=C:\COMMAND.COM
  1687.     LOGOUT
  1688.     C:
  1689.     PATH=C:\DOS
  1690.  
  1691.    To run this file the current directory must be F:\LOGIN. When using the
  1692.    MarxMenu command Logoff, MarxMenu changes to the \LOGIN directory of the
  1693.    first network drive, removes any map roots on this drive, and runs
  1694.    OFF.BAT.
  1695.  
  1696.    Setting up an OFF.BAT file is compatible with MarxMenu's automatic
  1697.    network logoff feature. This is where you can set the amount of time to
  1698.    wait at a menu before it automatically logs you off the network.
  1699.  
  1700.    Another way to logout under MarxMenu is to stuff the LOGOUT command into
  1701.    the keyboard buffer and exit MarxMenu.
  1702.  
  1703.     Example:
  1704.        OnKey ESC
  1705.          |StuffKBD 'LOGOUT' + CR
  1706.          |ExitMenu
  1707.  
  1708.  
  1709.  
  1710.    Computer Tyme MarxMenu Users Manual                     Page 19
  1711.    _______________________________________________________________
  1712.  
  1713.  
  1714.    Another logout trick is to use the LOGOFF utility from the Computer Tyme
  1715.    Network Survival Kit. This program automatically fixes your PATH and
  1716.    COMSPEC after the logoff occurs.
  1717.  
  1718.    LOGGING IN WITH MARXMENU   LOGGING IN WITH MARXMENU   LOGGING IN WITH MARXMENU
  1719.  
  1720.    If there is any one thing that's trickier than logging out of a Novell
  1721.    network, its logging in. I have spent MANY hours struggling with Novell
  1722.    trying to get it right and I have finally figured it out. Much of this
  1723.    comes from the Novell gurus who hang out on Compuserve and know
  1724.    everything there is to know about Novell.
  1725.  
  1726.    The first thing you need to do is make up your mind that you are going
  1727.    to do it right. The technique here might seem somewhat cumbersome, but
  1728.    it works well and will keep you out of trouble.
  1729.  
  1730.    MarxMenu has the ability to log you into a network, map your drives, and
  1731.    set your environment strings without having to touch a Novell utility to
  1732.    do so. MarxMenu can completely eliminate the need for Novell login
  1733.    scripts. The advantage to using MarxMenu in the login is that you have
  1734.    the power of 600 commands to work with instead of just 25 or so.
  1735.  
  1736.    USING NOVELL'S LOGIN   USING NOVELL'S LOGIN   USING NOVELL'S LOGIN
  1737.  
  1738.    For those of you who want to stay with Novell's login program here's
  1739.    some tips to keep you out of trouble (And my tech support lines open).
  1740.  
  1741.    The last command in your system login script needs to be EXIT "batch
  1742.    name". This batch file will be the continuation of your login logic and
  1743.    end up jumping to the menu system. This is where TSR's can be loaded.
  1744.  
  1745.    Never load a TSR or run the menu from within a login script. Until the
  1746.    login script finishes, LOGIN.EXE is in memory and it uses over 100k.
  1747.  
  1748.    The first rule is don't use personal login scripts unless you have to.
  1749.    The simpler the login, the easier it is to maintain. Try to do as much
  1750.    as possible in the batch file you exit to.
  1751.  
  1752.    MarxMenu can be run from this batch file as a post login processor. In
  1753.    this case MarxMenu isn't being used as a menu but as a programming
  1754.    language that is capable of very powerful login logic. The batch file
  1755.    might look as follows:
  1756.  
  1757.     MARXMENU POST.MNU
  1758.     <load TSR's>
  1759.     MARX MAIN
  1760.  
  1761.    In POST.MNU you can set environment variables, test for directories,
  1762.    write batch files, read user lists, map drives, or any number of things
  1763.    that are useful to the login process.
  1764.  
  1765.  
  1766.  
  1767.    Computer Tyme MarxMenu Users Manual                     Page 20
  1768.    _______________________________________________________________
  1769.  
  1770.  
  1771.    THE CONFIG.SYS FILE   THE CONFIG.SYS FILE   THE CONFIG.SYS FILE
  1772.  
  1773.    The place to start is the place where DOS start when DOS boots. You MUST
  1774.    create a CONFIG.SYS file on your boot disk. The CONFIG.SYS tells DOS how
  1775.    many files and buffers to create, what device drivers to load, and the
  1776.    size of the Master Environment.
  1777.  
  1778.    Unless you are using special drivers, BUFFERS=40 and FILES=40 is a good
  1779.    place to start. STACKS 0,0 will gain you an extra 3k of ram. But the
  1780.    most important command is the shell statement. A CONFIG.SYS file might
  1781.    look like this:
  1782.  
  1783.     SHELL=COMMAND.COM /P /E:400
  1784.     BUFFERS=40
  1785.     FILES=40
  1786.     DEVICE=ANSI.SYS
  1787.  
  1788.    This sets up enough environment space to allow MarxMenu and DOS SET
  1789.    commands to work properly. You will also want to load any other device
  1790.    drivers like QEMM386.SYS or 386MAX.SYS to take advantage of other
  1791.    features of your computer. If you don't know about CONFIG.SYS files,
  1792.    read the DOS manual.
  1793.  
  1794.    Network Note: If you don't have a local hard disk and are booting from a
  1795.    floppy drive, set BUFFERS=4. If you are booting from a diskless
  1796.    workstation, set BUFFERS=1. BUFFERS are used for local drives only and
  1797.    have no effect on network drives. You save 1k of memory for every 2
  1798.    buffers you don't use.
  1799.  
  1800.    THE AUTOEXEC.BAT FILE   THE AUTOEXEC.BAT FILE   THE AUTOEXEC.BAT FILE
  1801.  
  1802.    After the CONFIG.SYS is loaded the AUTOEXEC.BAT runs next. Here you load
  1803.    up your TSRs and network drivers. There are some important tricks to be
  1804.    used here as well.
  1805.  
  1806.    First of all, never load your network shell from your AUTOEXEC.BAT file.
  1807.    Always have it branch to another batch file called LOADNET to load the
  1808.    network shell. Use the AUTOEXEC.BAT only to load special TSRs and the
  1809.    IPX. An AUTOEXEC.BAT might look like this:
  1810.  
  1811.     @Echo Off
  1812.     Cls
  1813.     IPX
  1814.     SET NET=NETX.COM
  1815.     SET COMSPEC=O:COMMAND.COM
  1816.     LOADNET
  1817.  
  1818.  
  1819.  
  1820.    Computer Tyme MarxMenu Users Manual                     Page 21
  1821.    _______________________________________________________________
  1822.  
  1823.  
  1824.    The two SET commands are very important. The first sets a variable
  1825.    called NET to NETX.COM. This will be used later in LOADNET.BAT. By using
  1826.    this variable, you can have users running many different versions of DOS
  1827.    and still use the same LOADNET.BAT file. You could also use a command
  1828.    SET NET=LOADHI EMSNETX.EXE to take advantage of advanced memory manager
  1829.    software.
  1830.  
  1831.    Another trick is to run BESTNET from the Network Survival Kit. BestNet
  1832.    will automatically pick the best network shell and set the NET
  1833.    environment variable for you. You would use the command BESTNET instead
  1834.    of SET NET=NETX.COM in the AUTOEXEC.BAT file.
  1835.  
  1836.    The SET COMSPEC=O:COMMAND.COM is important if you are booting off of
  1837.    either a floppy drive or a diskless workstation. This assumes that O:
  1838.    will eventually be mapped to a directory on the network that has a valid
  1839.    COMMAND.COM in it.
  1840.  
  1841.    It is important to set the comspec BEFORE loading your NET shell. This
  1842.    prevents a problem where Netware wants to go back to the boot disk even
  1843.    after you change the comspec. I don't know why this works but it does.
  1844.    Trust Me. If you are going to use COMMAND.COM on drive C:, ignore this
  1845.    paragraph.
  1846.  
  1847.    Now we go to the LOADNET.BAT file.
  1848.  
  1849.     @Echo Off
  1850.     %NET%
  1851.     SET NET=
  1852.     F:
  1853.     STARTUP
  1854.  
  1855.    The big concept behind LOADNET is that this file is NEVER CHANGED. You
  1856.    put in on all your workstations and in the LOGIN directory and it is
  1857.    EXACTLY THE SAME for every computer in your network. Any changes to
  1858.    individual computers are made in the AUTOEXEC.BAT file.
  1859.  
  1860.    So why is this important. Because if you are running diskless
  1861.    workstations what happens is that while you are booting you have a
  1862.    mythical drive A:. As soon as your NET shell loads this drive
  1863.    dissappears out from under you and you end up in F:\LOGIN. If you are
  1864.    running LOADNET.BAT when this happens you drop out of A:LOADNET.BAT and
  1865.    land in the middle of F:\LOADNET.BAT. And if your LOADNET.BAT is exactly
  1866.    the same file as the LOADNET.BAT in the \LOGIN directory, you take off
  1867.    running like the transition never occured.
  1868.  
  1869.    Even if you are not running on diskless workstations now, you might go
  1870.    to it someday. It also creates good programming habits and helps you
  1871.    boot up cleanly.
  1872.  
  1873.  
  1874.  
  1875.    Computer Tyme MarxMenu Users Manual                     Page 22
  1876.    _______________________________________________________________
  1877.  
  1878.  
  1879.    Lets see what LOADNET does. The first line is @ECHO OFF, that's easy.
  1880.    The second line %NET% executes the network shell that you specified with
  1881.    the SET NET=NETX command. This actually loads the network shell. The
  1882.    third line clears the NET variable freeing up space for other
  1883.    environment variables. F: switches you to drive F if you aren't there
  1884.    already. And finally STARTUP is the name of yet another batch file you
  1885.    jump to.
  1886.  
  1887.    The STARTUP.BAT file controls what happens AFTER LOADNET runs. This file
  1888.    can be freely changed so that LOADNET.BAT can stay the same. This lets
  1889.    you modify what happens AFTER the network shell is loaded.
  1890.  
  1891.    If you are using Novell's login program STARTUP.BAT might look like
  1892.    this:
  1893.  
  1894.     @Echo Off
  1895.     LOGIN
  1896.  
  1897.    THE SHELL.CFG FILE   THE SHELL.CFG FILE   THE SHELL.CFG FILE
  1898.  
  1899.    The SHELL.CFG file is used by Netware to configure the Netware shell.
  1900.    You should read the manuals on this to see if you need any of the many
  1901.    options available. I suggest you at least have the following commands in
  1902.    your SHELL.CFG file.
  1903.  
  1904.     cache buffers=4
  1905.     show dots=on
  1906.  
  1907.    The master network gurus tell me that cache buffers are just a waste of
  1908.    memory and do not provide any better performance. Every 2 cache buffers
  1909.    not used saves you 1k of memory. Show dots makes your network compatible
  1910.    with more software utilities and should be set on unless you have some
  1911.    other reason not to.
  1912.  
  1913.    USING A MENU FILE TO LOG IN   USING A MENU FILE TO LOG IN   USING A MENU FILE TO LOG IN
  1914.  
  1915.    If you are going to use MarxMenu to log in instead of Novell's
  1916.    utilities, you will want to print out the sample file LOGIN.MNU on your
  1917.    MarxMenu disk and study it. Your STARTUP.BAT file might look like this:
  1918.  
  1919.     @Echo Off
  1920.     SET BOOTUP=LOGIN
  1921.     MarxMenu Login
  1922.     %BOOTUP%
  1923.  
  1924.    If MarxMenu works correctly, it will change the environment variable
  1925.    %BOOTUP% to point to a file that it creates. If for some reason it fails
  1926.    (you make a mistake in the login), it will execute Novell's login and
  1927.    let you get in and fix it.
  1928.  
  1929.  
  1930.  
  1931.    Computer Tyme MarxMenu Users Manual                     Page 23
  1932.    _______________________________________________________________
  1933.  
  1934.  
  1935.    You will have to modify the LOGIN.MNU for your system. The one that I
  1936.    supply will not work on your system. It is to be used as a sample only
  1937.    and provide ideas for your login menu.
  1938.  
  1939.    One word of caution. After modifying this menu, always run MARXCOMP
  1940.    LOGIN to compile it. Otherwise, if you boot up into it you won't have
  1941.    enough access rights to recompile automatically.
  1942.  
  1943.    NOVELL SEARCH DRIVES   NOVELL SEARCH DRIVES   NOVELL SEARCH DRIVES
  1944.  
  1945.    MarxMenu and Network Survival Kit files need to be in the search path.
  1946.    You can copy the files into a directory that is already in the search
  1947.    path or create a new directory and add it to the search path. Here is a
  1948.    suggested setup.
  1949.  
  1950.     ---+--- SYSTEM
  1951.        |
  1952.        +--- MAIL
  1953.        |
  1954.        +--- LOGIN
  1955.        |
  1956.        +--- HOME -----+--- FRED
  1957.        |              |
  1958.        |              +--- BARNEY
  1959.        |
  1960.        +--- PUBLIC ---+--- DOS
  1961.                       |
  1962.                       +--- UTIL
  1963.                       |
  1964.                       +--- NSK
  1965.  
  1966.    I would use MAP ROOT and set up the following mapped drives:
  1967.  
  1968.      MAP ROOT H: = \HOME\BARNEY
  1969.      MAP ROOT U: = \PUBLIC\UTIL
  1970.      MAP ROOT N: = \PUBLIC\NSK    ;Network Survival Kit
  1971.      MAP ROOT O: = \PUBLIC\DOS
  1972.      MAP ROOT P: = \PUBLIC
  1973.  
  1974.      Set PATH=H:\;U:\;N:\;O:\;P:\;
  1975.  
  1976.    The idea here is that the users home directory is searched first. Then
  1977.    the util directory where various network goodies and batch files are
  1978.    kept. Then the NSK directory where only NSK and menu file are. Then the
  1979.    DOS directory where only your original DOS files are. And finally PUBLIC
  1980.    which contains only Novell utilities.
  1981.  
  1982.    Traditionally, with Novell networks, searches have been set up using the
  1983.    current directories of paths such as:
  1984.  
  1985.      Set PATH=H:.;U:.;N:.;O:.;P:.;
  1986.  
  1987.  
  1988.  
  1989.    Computer Tyme MarxMenu Users Manual                     Page 24
  1990.    _______________________________________________________________
  1991.  
  1992.  
  1993.    I have found that since the addition of the MAP ROOT enhancement that
  1994.    this traditional method is not as flexible.
  1995.  
  1996.    SETTING FILE ATTRIBUTES   SETTING FILE ATTRIBUTES   SETTING FILE ATTRIBUTES
  1997.  
  1998.    Historically Novell has recommended setting file attributes to Shareable
  1999.    and Read Only. This was to deal with DOS 3.0 and earlier and network
  2000.    dumb programs. This is now an obsolete process and if you are in the
  2001.    habit of doing this it's time to quit (Unless you are still running DOS
  2002.    version 2 on your workstations).
  2003.  
  2004.    I personally flag all my network files Normal as a way of catching
  2005.    network dumb programs.
  2006.  
  2007.    MarxMenu is a network smart product. It therefore isn't recommended that
  2008.    any file flagging be done on Computer Tyme software.
  2009.  
  2010.    NOVELL SEMAPHORES   NOVELL SEMAPHORES   NOVELL SEMAPHORES
  2011.  
  2012.    For a detailed explanation of Novell Semaphores, read the Novell
  2013.    manuals. What I've done is to export these functions to MarxMenu. I have
  2014.    implemented them slightly different than Novell did and have hidden all
  2015.    the nasties from you such as semaphore handles. All semaphores are
  2016.    accessed by name only.
  2017.  
  2018.    Here's a brief overview of semaphores. Semaphores are names of shared
  2019.    resources that the server keeps track of. Semaphores have three
  2020.    properties. They have a name, value and number of users. The name can be
  2021.    anything up to 48 characters long. The value is a number from -128 to
  2022.    127. If the value is less than 0, the resource the semaphore represents
  2023.    is considered used up.
  2024.  
  2025.    By opening a semaphore, you increase the number of users by one. By
  2026.    closing it, you decrease the number by one. If a single user opens a
  2027.    semaphore many times, it is only counted as one. When you log out, your
  2028.    semaphores are closed. This is also true if you turn your computer off,
  2029.    but it takes 15 minutes for the server to give up on you.
  2030.  
  2031.    The first user to open a semaphore creates it. The last user to close a
  2032.    semaphore deletes it. When a semaphore is created, a value can be
  2033.    assigned. If a semaphore is opened that already exists, the initial
  2034.    value is ignored.
  2035.  
  2036.    When NovWaitOnSemaphore is called by any user, the value is decremented.
  2037.    If the value is not below zero, NovWaitOnSemaphore returns true.
  2038.    Otherwise it returns false and the value is unchanged. The amount of
  2039.    time that NovWaitOnSemaphore will wait is controlled by the variable
  2040.    NovSemaphoreTimeOut.
  2041.  
  2042.    When NovSignalSemaphore is called by any user, the value is incremented.
  2043.    This allows other users to call NovWaitOnSemaphore and get a True value.
  2044.  
  2045.  
  2046.  
  2047.    Computer Tyme MarxMenu Users Manual                     Page 25
  2048.    _______________________________________________________________
  2049.  
  2050.  
  2051.    NovSemaphoreUsers and NovSemaphoreValue are used to read the status of a
  2052.    semaphore without changing it's value.
  2053.  
  2054.    One of the major differences between how MarxMenu uses semaphores and
  2055.    the way Novell uses them is that normally a semaphore dies when the
  2056.    application finishes. This would normally prevent a 0k menu system from
  2057.    being able to use them. MarxMenu uses an interesting trick where it
  2058.    fools Netware into thinking that the semaphore belongs to another task.
  2059.    This allows the semaphore to live.
  2060.  
  2061.    Semaphores can be tracked using FCONSOLE. Some versions of Netware have
  2062.    a bug in FCONSOLE that reports an open count that is 256 times the real
  2063.    count. Just divide by 256 for the right number.
  2064.  
  2065.    Semaphores can be used for software metering. This allows MarxMenu to be
  2066.    aware of what other users on the network are doing. Here are the basic
  2067.    tools, what you do with them is only limited by your imagination.
  2068.  
  2069.    RUNNING A MARXMENU   RUNNING A MARXMENU   RUNNING A MARXMENU
  2070.  
  2071.    MarxMenus are run by typing MARX and the name of a menu file such as
  2072.    QUICK.MNU. As discussed earlier, the menu file is a text file created
  2073.    with a text editor such as TEDIT.
  2074.  
  2075.     Usage: MARX <Menu Filename>
  2076.  
  2077.     Example:
  2078.        MARX QUICK
  2079.  
  2080.    In the above example, if SAMPLE.MRX doesn't exist, or is older than
  2081.    SAMPLE.MNU then MarxMenu will automatically load the complier,
  2082.    MARXCOMP.EXE to create a new SAMPLE.MRX file.
  2083.  
  2084.    In the never ending quest for more speed, MarxMenu is somewhat faster to
  2085.    load if you include the MRX extension.
  2086.  
  2087.     Example:
  2088.        MARX QUICK.MRX
  2089.  
  2090.    By specifying the MRX extension, no test is made to compare the file
  2091.    date with the source file. Thus if you have changed the MNU file, you
  2092.    will still be running the old version. In order to force a recompile,
  2093.    type MARXCOMP QUICK.
  2094.  
  2095.  
  2096.  
  2097.    Computer Tyme MarxMenu Users Manual                     Page 26
  2098.    _______________________________________________________________
  2099.  
  2100.  
  2101.    UPGRADING MARXMENU   UPGRADING MARXMENU   UPGRADING MARXMENU
  2102.  
  2103.    When installing an upgraded version of MarxMenu be sure to copy the
  2104.    MARXMENU.EXE, MARXMENU.OVR and MARXCOMP.EXE files into your MarxMenu
  2105.    directory. A very common mistake is not copying the MARXMENU.OVR file.
  2106.    If you forget this file MarxMenu will lock up when you try to run it.
  2107.    If you are on a network and anyone on the network is using the menu you
  2108.    won't be able to copy over MARXMENU.OVR. You will have to wait to after
  2109.    hours or chase everyone off the network to install the upgrade.
  2110.  
  2111.    A common mistake occurs when you copy the MarxMenu file into a working
  2112.    directory and someone else has the MARXMENU.OVR file open and you fail
  2113.    to notice that it failed to copy. If MarxMenu starts locking up after an
  2114.    upgrade this is probably why. Make sure the file dates on MARXMENU.EXE
  2115.    and MARXMENU.OVR are the same.
  2116.  
  2117.    After installing the new MarxMenu, all your menu files will have to be
  2118.    recompiled. This should happen automatically, but if you are on a
  2119.    network and the users don't have enough access rights the compile will
  2120.    fail. You can recompile all your network menus as follows:
  2121.  
  2122.     WHEREIS *.MNU|DOLIST MARXCOMP @L
  2123.  
  2124.    If you are using MarxMenu to log into the network then be sure to copy
  2125.    the new MarxMenu files into your LOGIN directory and recompile your
  2126.    LOGIN menu.
  2127.  
  2128.    If you install MarxMenu in one directory and then move it to another you
  2129.    will have to run MARXMENU INST to recreate the batch files for that
  2130.    directory. Make sure that the MarxMenu files are on your PATH.
  2131.  
  2132.    Any time you upgrade MarxMenu should work as well or better that the
  2133.    previous version. Occasionally I make a mistak so you might want to
  2134.    copy your present NSK directory to another temporary directory until the
  2135.    upgrade is complete and tested. This gives you the ability to go back to
  2136.    the old one should the need arise. This procedure should be followed on
  2137.    software upgrades from other vendors as well.
  2138.  
  2139.  
  2140.  
  2141.    Computer Tyme MarxMenu Users Manual                     Page 27
  2142.    _______________________________________________________________
  2143.  
  2144.  
  2145.    CUSTOMIZING MARXMENU SAMPLE FILES   CUSTOMIZING MARXMENU SAMPLE FILES   CUSTOMIZING MARXMENU SAMPLE FILES
  2146.  
  2147.    Included in the MarxMenu package are menu files which you can easily
  2148.    modify to execute your programs and perform other functions you desire.
  2149.    Using TEdit, the text editor included in this package, you can modify
  2150.    and customize these menu files.
  2151.  
  2152.    Also included to demonstrate the power and versatility of the menu
  2153.    system is a menu labeled NIM.MNU. This is a game written in the menu
  2154.    system that demonstrates some of the logic functions and programmability
  2155.    of the system. Use it for reference.
  2156.  
  2157.     Here's a simple example of a menu file:
  2158.     ===================================
  2159.     ClearScreen
  2160.     DrawBox 30 9 25 8
  2161.     Writeln ' 1) Lotus'
  2162.     Writeln ' 2) dBase'
  2163.     Writeln ' 3) Wordstar'
  2164.     Writeln
  2165.     Write 'Select: '
  2166.  
  2167.     OnKey '1'
  2168.        cd\lotus
  2169.        123
  2170.  
  2171.     OnKey '2'
  2172.        cd\db3
  2173.        db3
  2174.  
  2175.     OnKey '3'
  2176.        cd\wordstar
  2177.        ws
  2178.  
  2179.     ====================================
  2180.  
  2181.    Notice in looking at the "OnKey" statements that all I have to do is
  2182.    tell MarxMenu how to get to the program. Although, MarxMenu takes care
  2183.    of reloading itself after exiting a selected program, its does not
  2184.    return to its own subdirectory as many other menu programs do.
  2185.  
  2186.    That means that if you execute a program in another subdirectory, when
  2187.    you come back to the menu, you remain in that subdirectory. If you
  2188.    normally run your applications with a batch file, consider having
  2189.    MarxMenu change directories and execute the program for you. This will
  2190.    eliminate debugging problems caused by the actions of your batch files.
  2191.  
  2192.  
  2193.  
  2194.    Computer Tyme MarxMenu Users Manual                     Page 28
  2195.    _______________________________________________________________
  2196.  
  2197.  
  2198.    MENU ANALYSIS   MENU ANALYSIS   MENU ANALYSIS
  2199.  
  2200.    Let's start a simple analysis of the example menu file shown
  2201.    above. The ClearScreen statement simply clears the screen to
  2202.    give us a fresh workspace for the menu. DrawBox is the command to
  2203.    draw a box on the screen to contain some menu text. The Writeln
  2204.    command writes a line of text to the screen within the box, then
  2205.    positions the cursor on the next line. The menu text shows the
  2206.    available selection keys that the user has access to.
  2207.  
  2208.    ONKEY STATEMENTS   ONKEY STATEMENTS   ONKEY STATEMENTS
  2209.  
  2210.    The OnKey statements control what is actually executed. OnKey
  2211.    statements also allow you to execute hidden commands when you do
  2212.    not want them to appear on the menu screen. One trick I use is to
  2213.    have an OnKey statement define a key that runs TEDIT on my
  2214.    personal menu file. I don't show this key on the menu to keep
  2215.    others from poking around in the file. For additional security
  2216.    a password can also be set up on this key.
  2217.  
  2218.    Normally you enter a line of text as if you were creating a BAT
  2219.    file to run your application. Like batch files, if one of your
  2220.    commands is a batch file, all the statements after it will not
  2221.    execute. To prevent this you can use the CALL command to call a
  2222.    batch file in DOS 3.3 or later, or COMMAND /C in DOS 3.1 and 3.2.
  2223.  
  2224.    Normally, text displayed under an OnKey statement is the same
  2225.    text as the batch file created by MarxMenu. There are some
  2226.    exceptions. If a line starts with a "|" (vertical bar), the line
  2227.    will be interpreted by MarxMenu instead of being written to a
  2228.    batch file. This allows commands such as "PASSWORD" to be used.
  2229.    String variables can be passed as part of a batch command if the
  2230.    name of the string variable starts with a "%" symbol.
  2231.  
  2232.    The spaces preceding the commands under the OnKey statement are
  2233.    for clarity only. They are not necessary for MarxMenu to function
  2234.    properly.
  2235.  
  2236.  
  2237.  
  2238.    Computer Tyme MarxMenu Users Manual                     Page 29
  2239.    _______________________________________________________________
  2240.  
  2241.  
  2242.    POPUP MENUS   POPUP MENUS   POPUP MENUS
  2243.  
  2244.    If you want to create a popup menu within a menu you can do so by
  2245.    using a "label". A label is a keyword preceded by a colon. To
  2246.    call the popup menu, place the keyword on a line by itself
  2247.    preceded by a carat (Shift 6). The label will precede the popup
  2248.    menu definition.
  2249.  
  2250.    For example if you have a popup menu to load Smart Software, you could
  2251.    name the PopUpMenu Smart. To bring up the Smart PopUpMenu, define a key
  2252.    in your main menu for Smart like this:
  2253.  
  2254.     OnKey 'S'
  2255.        ^Smart
  2256.  
  2257.    The Smart menu itself might look something like this:
  2258.  
  2259.     :Smart
  2260.     BoxHeaderColor ForeColor BackColor
  2261.     BoxBorderColor Yellow Green
  2262.     BoxInsideColor LCyan Green
  2263.     InverseColor Yellow Red
  2264.     BoxHeader = ' Smart Menu '
  2265.     DrawBox 45 16 20 6
  2266.     UseArrows 2 2 16 3
  2267.     ClearLine 205
  2268.     Writeln
  2269.     Writeln '  Data Base'
  2270.     Writeln '  Spread Sheet'
  2271.     Write   '  Word Processor'
  2272.  
  2273.     OnKey 'D'
  2274.       SM D
  2275.  
  2276.     OnKey 'S'
  2277.       |BoxHeaderColor ForeColor BackColor
  2278.       |BoxBorderColor Yellow Green
  2279.       |BoxInsideColor White Green
  2280.       |%1 = PickFile('C:\SMART\SPREAD\*.WS',4,5,17)
  2281.       SM S -ALOAD %1
  2282.  
  2283.     OnKey 'W'
  2284.       |BoxHeaderColor ForeColor BackColor
  2285.       |BoxBorderColor Yellow Green
  2286.       |BoxInsideColor White Green
  2287.       |%1 = PickFile('C:\SMART\WORD\*.DOC',4,5,17)
  2288.       SM W -ALOAD %1
  2289.  
  2290.  
  2291.  
  2292.    Computer Tyme MarxMenu Users Manual                     Page 30
  2293.    _______________________________________________________________
  2294.  
  2295.  
  2296.    While developing the menu, program one of the keys to run your favorite
  2297.    editor on the menu file that you are creating. This way, as soon as the
  2298.    change is made, the results will show when you exit your editor. Since
  2299.    MarxMenu allows versatility in creating the look of your menus, a little
  2300.    trial and error will be required to make things look right.
  2301.  
  2302.    THE CONSOLE   THE CONSOLE   THE CONSOLE
  2303.  
  2304.            +---| Console Functions |---+
  2305.            | 1 - Blank Screen          |
  2306.            | 2 - Set Blank Message     |
  2307.            | 3 - Lock Keyboard         |
  2308.            | 4 - Set Blank Time        |
  2309.            +---------------------------+
  2310.  
  2311.    The Console is a popup menu of built-in functions. To activate the
  2312.    console, press the TAB key. A menu will pop-up in the upper left hand
  2313.    corner of the screen. You can change the position of this popup menu
  2314.    with the ConsolePos function.
  2315.  
  2316.    The first command on the Console screen is Blank Screen. Enter 1 and the
  2317.    screen will blank immediately. It will remain blanked until a key is
  2318.    pressed. Enter 2 on the Console menu and you can change the message
  2319.    displayed on the Blank Screen display.
  2320.  
  2321.    Enter 3 and you will be prompted for a word to lock the keyboard. After
  2322.    you enter the lock word the screen will blank and the keyboard will be
  2323.    locked until the exact lock word is typed. Enter 4 to set the number of
  2324.    minutes to wait before blanking the screen.
  2325.  
  2326.    The lock word feature is handy for times when you must leave the
  2327.    keyboard but don't want menu commands displayed for all to see. It also
  2328.    effectively locks the keyboard so someone can't escape to DOS and test
  2329.    the format command on your hard disk. We run this menu on a Novell
  2330.    Network and don't want to let everyone have access to the Supervisors'
  2331.    power at the touch of the escape key should we leave the keyboard.
  2332.  
  2333.    REPOSITIONING THE TOP WINDOW   REPOSITIONING THE TOP WINDOW   REPOSITIONING THE TOP WINDOW
  2334.  
  2335.    One nice feature you can use to get the windows right is to turn on the
  2336.    scroll lock. This lets you move the top window around the screen using
  2337.    the arrow keys so you can see how it looks. Then you can go into your
  2338.    menu code and set it permanently.
  2339.  
  2340.    Set Scroll Lock to "on". On most keyboards, a scroll lock LED will light
  2341.    up. Now use the arrow keys to move the top window to any position on the
  2342.    screen. Neat Huh?
  2343.  
  2344.  
  2345.  
  2346.    Computer Tyme MarxMenu Users Manual                     Page 31
  2347.    _______________________________________________________________
  2348.  
  2349.  
  2350.    MOUSE SUPPORT   MOUSE SUPPORT   MOUSE SUPPORT
  2351.  
  2352.    If you have a standard mouse driver, MarxMenu will detect it and use it
  2353.    automatically. The left button on the mouse is the same as pressing
  2354.    return. The right button on the mouse is the same as pressing escape.
  2355.    Pressing both buttons on the mouse is the same as pressing the tab key.
  2356.    As of now, I'm not yet using the center button on the mouse for
  2357.    anything.
  2358.  
  2359.    The sensitivity of the mouse can be controlled using the MouseHorizontal
  2360.    and MouseVertical commands or bY setting environment variables MOUSEX
  2361.    and MOUSEY.
  2362.  
  2363.    STARTING OFF THE EASY WAY   STARTING OFF THE EASY WAY   STARTING OFF THE EASY WAY
  2364.  
  2365.    For those of you who want to just get a menu going and don't want
  2366.    anything complicated we have included a menu called the LEVEL1 menu.
  2367.    This menu is a fill in the blank type of menu that will get you going
  2368.    quickly and easilly.
  2369.  
  2370.    This menu requires no programming and explains itself. You run it by
  2371.    typing the command:
  2372.  
  2373.     MARX LEVEL1
  2374.  
  2375.    The first thing it does is scan your drive to find the directories. Then
  2376.    you just answer the questions and fill in the menu. This isn't as
  2377.    powerful as programming your own menu, but if you want something quick
  2378.    and dirty, this may be the answer for you.
  2379.  
  2380.    ABOUT VARIABLES   ABOUT VARIABLES   ABOUT VARIABLES
  2381.  
  2382.    One of the most unusual things about MarxMenu is its variables. MarxMenu
  2383.    handles variables differently than any other programming language. For
  2384.    the experienced programmer, this may require some adjustment since it's
  2385.    like getting used to driving a Cadillac after driving a VW Beetle.
  2386.  
  2387.    All variables in MarxMenu are like an empty box that can contain
  2388.    anything. A variable can be a number, boolean, string, file, array, etc.
  2389.    The type of variable is controlled internally and the user need not
  2390.    declare variable types.
  2391.  
  2392.    Variables are created with the VAR command:
  2393.  
  2394.     Var X Y Z
  2395.  
  2396.    If the word VAR is on a line by itself, the following lines, up to a
  2397.    blank line, are considered variable names.
  2398.  
  2399.  
  2400.  
  2401.    Computer Tyme MarxMenu Users Manual                     Page 32
  2402.    _______________________________________________________________
  2403.  
  2404.  
  2405.     Var
  2406.       MyAge
  2407.       YourAge
  2408.       HisAge
  2409.       HerAge
  2410.  
  2411.    Variables are initialized to null values; 0 for Numbers, False for
  2412.    Booleans, and '' for strings. Initial values can be set when the
  2413.    variable is created.
  2414.  
  2415.     Var
  2416.       X = 6
  2417.       MyName = 'Marc'
  2418.       Programmer = True
  2419.  
  2420.    Variables can change variable types. If you write a number to a string
  2421.    variable, the variable changes to a number.
  2422.  
  2423.     X = '234'
  2424.     X = Value(X)
  2425.  
  2426.    This is valid in MarxMenu. X now is a number and contains the value 234.
  2427.  
  2428.    When choosing variable names, it is good programming practice to choose
  2429.    long meaningful names. This allows yourself and others to be able to
  2430.    read menus and follow the logic more easily.
  2431.  
  2432.    NUMERIC VARIABLES   NUMERIC VARIABLES   NUMERIC VARIABLES
  2433.  
  2434.    MarxMenu supports two kinds of numbers, 32 bit integers and real
  2435.    (floating point) numbers. Integers are whole numbers in the range of
  2436.    plus or minus 2,147,483,647. This gives you a wide range of numbers but
  2437.    no fractions.
  2438.  
  2439.    With integers the answers to division are always rounded down thus:
  2440.  
  2441.     7 / 3 = 2
  2442.  
  2443.    Numbers beginning with a '$' indicate base 16 or hex numbers.
  2444.  
  2445.     Example: $20 is the same as 32
  2446.  
  2447.  
  2448.  
  2449.    Computer Tyme MarxMenu Users Manual                     Page 33
  2450.    _______________________________________________________________
  2451.  
  2452.  
  2453.    BOOLEAN VARIABLES   BOOLEAN VARIABLES   BOOLEAN VARIABLES
  2454.  
  2455.    Boolean variables are True or False. For example:
  2456.  
  2457.     var Adult
  2458.        Adult = True
  2459.        if not Adult then Write 'You must be 21 to enter.'
  2460.  
  2461.    Boolean values can be set by computation:
  2462.     Example:
  2463.        Adult = Age >= 21
  2464.  
  2465.    In this example the result of Age >= 21 is stored in the variable Adult.
  2466.  
  2467.    If you use a boolean variable by itself, MarxMenu assumes you are
  2468.    setting it to on. Thus:
  2469.  
  2470.      ClearScreenOnExit
  2471.  
  2472.    is the same as:
  2473.  
  2474.      ClearScreenOnExit On
  2475.  
  2476.    STRING VARIABLES   STRING VARIABLES   STRING VARIABLES
  2477.  
  2478.    String variables are limited to 255 characters.
  2479.  
  2480.    In MarxMenu, string literals are delimited by either single or double
  2481.    quotes.
  2482.  
  2483.     "This can't be yogurt!"
  2484.     'Lincoln said "Four score and seven years ago ..." '
  2485.  
  2486.    REAL NUMBERS   REAL NUMBERS   REAL NUMBERS
  2487.  
  2488.    So what's the difference between ordinary numbers and real numbers?
  2489.    Ordinary numbers in MarxMenu are 32 bit integers. These are numbers
  2490.    whose range is about plus or minus two billion. Integers are whole
  2491.    numbers and do not include any fractions.
  2492.  
  2493.    This is why MarxMenu has included REAL numbers (also known as Floating
  2494.    Point numbers). Real numbers in MarxMenu use BCD (Binary Coded Decimal)
  2495.    with 18 digits of accuracy. They have a range of 10 to the plus or minus
  2496.    63rd power, which means up to 63 zeros either side of the decimal point.
  2497.    This lets you work with very big and very small numbers.  MarxMenu has
  2498.    smart rounding algorithms so that 1.0 / 3 * 3 = 1.0 and not
  2499.    0.999999999999999999 like in most languages.
  2500.  
  2501.  
  2502.  
  2503.    Computer Tyme MarxMenu Users Manual                     Page 34
  2504.    _______________________________________________________________
  2505.  
  2506.  
  2507.    Real numbers are specified by using a decimal point. Thus 5.0 specifies
  2508.    a real number. Most normal MarxMenu functions still require the standard
  2509.    32 bit integers. If you get the error: 'REAL found where INTEGER
  2510.    expected.' You need to use an integer.
  2511.  
  2512.    If an integer is passed where a real is expected, the integer is
  2513.    automatically converted to a real. Thus:
  2514.  
  2515.     6.0 * 3 = 18.0
  2516.  
  2517.    The Value function returns real numbers if a decimal point is used in
  2518.    the string. All the relevant math functions will work with reals as well
  2519.    as comparison operators.
  2520.  
  2521.    MarxMenu supports a variety of functions for real numbers. It has trig
  2522.    functions, log functions, and exponential functions. So why do you need
  2523.    real numbers in a menu program? I don't know. I had a library and
  2524.    threw them in. I figure someone will need them someday.
  2525.  
  2526.    With real numbers you can do trigonometry calculations like those
  2527.    discovered by the ancient Indian chief Pythagoras who discovered what is
  2528.    now known as Pythagoras's triangle.
  2529.  
  2530.    Now I know that a lot of you were taught in Math class that Pythagoras
  2531.    was Greek. Well, it's just not so. Let me tell you the real story:
  2532.  
  2533.    Pythagoras was an Indian chief that had three wives. Two of the wives
  2534.    were twins and weighed 120 pounds each. And they sat next to Pythagoras
  2535.    on a pair of twin deer hides.
  2536.  
  2537.    But Pythagoras also had a third wife who was a large fat woman who sat
  2538.    across from Pythagoras on a hippopotamus hide. This wife weighed 240
  2539.    pounds.
  2540.  
  2541.    What Pythagoras discovered was that the squaw on the hypopotamus was
  2542.    equal to the sum of the squaws on the other two hides!
  2543.  
  2544.    LOCAL VARIABLES   LOCAL VARIABLES   LOCAL VARIABLES
  2545.  
  2546.    MarxMenu also supports local variables. Variables declared within
  2547.    procedures become local variables. Local variables are just like global
  2548.    variables in that you can use them as multidimensional arrays. When the
  2549.    procedure finishes, all local variables are disposed.
  2550.  
  2551.    If a local variable has the same name as a global variable, the local
  2552.    variable will be used.
  2553.  
  2554.  
  2555.  
  2556.    Computer Tyme MarxMenu Users Manual                     Page 35
  2557.    _______________________________________________________________
  2558.  
  2559.  
  2560.    DATES   DATES   DATES
  2561.  
  2562.    Dates in MarxMenu are stored as the number of seconds since Junuary 1st
  2563.    1980. This gives MarxMenu a Date range of 68 years. By subtracting two
  2564.    dates, you get the number of seconds between two peroids of time.
  2565.  
  2566.    MarxMenu has several commands that convert text strings to dates. Here
  2567.    are some examples of how MarxMenu sees text dates.
  2568.  
  2569.     Examples:
  2570.       '4-7-91'                 ;04-07-1991 00:00:00
  2571.       'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
  2572.       '12:35:23a'              ;04-07-1991 00:35:23
  2573.       '3:15'                   ;04-07-1991 03:15:00
  2574.  
  2575.    If the string can't be converted, then the variable BadDate is set to
  2576.    true.
  2577.  
  2578.    MarxMenu can also convert dates to strings by using the DateString and
  2579.    TimeString commands.
  2580.  
  2581.    PASSING PARAMETERS TO PROCEDURES   PASSING PARAMETERS TO PROCEDURES   PASSING PARAMETERS TO PROCEDURES
  2582.  
  2583.    Procedures can accept parameters by declaring variable names on the same
  2584.    line as the name of the procedure.
  2585.  
  2586.    Procedures can return variables by using the Return command. Return
  2587.    exits the procedure returning the parameters on the same line as the
  2588.    Return statement.
  2589.  
  2590.     Example:
  2591.  
  2592.     Procedure Factorial (X)
  2593.     var Y Z
  2594.        Y = 1
  2595.        Z = 1
  2596.        while Y <= X
  2597.           Z = Y * Z
  2598.           Y = Y + 1
  2599.        endwhile
  2600.        Writeln X ' factorial is ' Z
  2601.     EndProc
  2602.  
  2603.    In this example, if you were to use Factorial (5) you would get:
  2604.  
  2605.     5 factorial is 120
  2606.  
  2607.     Another Example:
  2608.  
  2609.  
  2610.  
  2611.    Computer Tyme MarxMenu Users Manual                     Page 36
  2612.    _______________________________________________________________
  2613.  
  2614.  
  2615.     Procedure AskYesNo (Question)
  2616.     var YesNo
  2617.        DrawBox (34 - (Length(Question) / 2)) 21 Length(Question) + 14 3
  2618.        TextColor LCyan Blue
  2619.        UseArrows Off
  2620.        Write ' ',Question,' (Y/N) '
  2621.        YesNo = UpperCase(ReadKey)
  2622.        YesNo = YesNo = 'Y'
  2623.        if YesNo
  2624.           Write 'Yes'
  2625.        else
  2626.           Write 'No'
  2627.        endif
  2628.        Wait 50
  2629.        EraseTopWindow
  2630.        Return (YesNo)
  2631.     EndProc
  2632.  
  2633.     if AskYesNo 'Do you want to continue? ' then Continue
  2634.  
  2635.    In this example, MarxMenu draws a box and asks a question and waits for
  2636.    a Yes or No answer.
  2637.  
  2638.    Arrays can be passed as parameters. Parameters are passed by value not
  2639.    by reference. This means that any changes to the passed parameter do not
  2640.    affect the original value.
  2641.  
  2642.    You can copy an array by assigning it equal to another array.
  2643.  
  2644.     Example:
  2645.  
  2646.     Array1 = Array2
  2647.  
  2648.    This creates Array1 with a copy of all the elements of Array2. The
  2649.    previous contents of Array1 are overwritten.
  2650.  
  2651.    ABOUT CONSTANTS   ABOUT CONSTANTS   ABOUT CONSTANTS
  2652.  
  2653.    Constants are used to give values meaningful names. By using constants a
  2654.    value can be assigned once and the constant name used throughout the
  2655.    menu program. This way, if you change the value of the constant, all the
  2656.    places where that constant is used automatically change.
  2657.  
  2658.    This is good programming practice.
  2659.  
  2660.     Examples:
  2661.  
  2662.     Const States = 50 CPU = '80386 SX' WeekEnd = True
  2663.  
  2664.     or
  2665.  
  2666.  
  2667.  
  2668.    Computer Tyme MarxMenu Users Manual                     Page 37
  2669.    _______________________________________________________________
  2670.  
  2671.  
  2672.     Const
  2673.        States = 50
  2674.        CPU = '80386 SX'
  2675.        WeekEnd = True
  2676.  
  2677.    Using the word STATES is just like using 50. Using CPU is just like
  2678.    using '80386 SX'. But if throughout my menu I use CPU, and then I get a
  2679.    new computer with a 80486, I can just change one line:
  2680.  
  2681.     Const CPU = '80486'
  2682.  
  2683.    And all the places I used CPU changes to '80486'. This is the correct
  2684.    way to program.
  2685.  
  2686.    ABOUT ARRAYS   ABOUT ARRAYS   ABOUT ARRAYS
  2687.  
  2688.    MarxMenu supports multidimensional arrays up to 31 dimensions. Unlike
  2689.    other programming languages, arrays need not be declared. MarxMenu
  2690.    creates arrays "on the fly" and automatically takes care of the array
  2691.    size and number of dimensions.
  2692.  
  2693.    Another unusual feature of MarxMenu arrays is that they are an array of
  2694.    MarxMenu variables. This means that elements of MarxMenu arrays need not
  2695.    be of the same type. Element 1 can be a number, element 2 can be a
  2696.    string and element 3 can be another array.
  2697.  
  2698.    This type of variable management leads to the easy creation of very
  2699.    powerful data structures as you will see.
  2700.  
  2701.     Var X
  2702.  
  2703.     X[1] = 'Element 1'
  2704.     X[2] = 3
  2705.     X[3] = True
  2706.     X[4,6] = 9
  2707.     X[4,7] = 'Ten'
  2708.  
  2709.    These are all valid statements. MarxMenu creates a two dimensional array
  2710.    here. If we now execute the following statement:
  2711.  
  2712.     X[4] = X[4,6] + X[2]
  2713.  
  2714.    X[4] becomes equal to 12 but variables X[4,6] and X[4,7] are lost. This
  2715.    is because we have changed an array into a number. MarxMenu
  2716.    automatically handles the deallocation of memory used by this array and
  2717.    its elements and returns the space the used to the memory pool.
  2718.  
  2719.  
  2720.  
  2721.    Computer Tyme MarxMenu Users Manual                     Page 38
  2722.    _______________________________________________________________
  2723.  
  2724.  
  2725.    ABOUT QUALIFIERS   ABOUT QUALIFIERS   ABOUT QUALIFIERS
  2726.  
  2727.    Qualifiers are named indexes into arrays. They are used to make the
  2728.    source menu file more readable and more organized.
  2729.  
  2730.    Suppose we are creating a data structure to deal with places in the
  2731.    United States. First we will need an array for States.
  2732.  
  2733.     Var States
  2734.  
  2735.     We want to store some facts about the states.
  2736.  
  2737.     Qualifier
  2738.        Population
  2739.        Bird
  2740.        Motto
  2741.        County
  2742.  
  2743.     State[3].Population = 10000000
  2744.     State[3].Bird = 'Chicken'
  2745.     State[3].Motto = 'Best politicians money can buy!'
  2746.  
  2747.    Now states have counties and counties have county seats, sheriffs, and
  2748.    cities.
  2749.  
  2750.     Qualifer
  2751.        Sheriff
  2752.        Seat
  2753.        City
  2754.  
  2755.     State[3].County[7].Sheriff = 'Buck InBred'
  2756.     State[3].County[7].Seat = 'Possum Trot'
  2757.  
  2758.    Now counties have cities and cities have schools, mayors, churches, and
  2759.    taxes.
  2760.  
  2761.     Qualifier
  2762.        Schools
  2763.        Mayor
  2764.        Churches
  2765.        Taxes
  2766.  
  2767.     State[3].County[7].City[9].Schools = 8
  2768.     State[3].County[7].City[9].Mayor = 'Virgil Collins'
  2769.     State[3].County[7].City[9].Churches = 120
  2770.     State[3].County[7].City[9].Taxes = '$100,000,000'
  2771.  
  2772.    The above line is the same as:
  2773.  
  2774.     State[3,4,7,3,9,4] = '$100,000,000'
  2775.  
  2776.  
  2777.  
  2778.    Computer Tyme MarxMenu Users Manual                     Page 39
  2779.    _______________________________________________________________
  2780.  
  2781.  
  2782.    As you can see with qualifiers, it is easy to create multidimensional
  2783.    arrays in a way that is organized and readable.
  2784.  
  2785.    In this example, the qualifier Population became equal to 1. Bird became
  2786.    equal to 2. The variable references, State[3].Bird and State[3,2] are
  2787.    the same. It's just that one is more readable than the other. Qualifiers
  2788.    normally begin by assigning 1 to the first name and 2 to the second
  2789.    etc. This can be modified.
  2790.  
  2791.     Qualifier
  2792.        Color = 7
  2793.        Size
  2794.        Shape
  2795.  
  2796.    In this case Color becomes the number 7; Size becomes the number 8; and
  2797.    Shape becomes the number 9.
  2798.  
  2799.    POINTER VARIABLES   POINTER VARIABLES   POINTER VARIABLES
  2800.  
  2801.    In MarxMenu variables can point to other variables allowing parameters
  2802.    to be passed to procedures by referrence as well as by value. A pointer
  2803.    variable stores the location of another variable. Any time a pointer
  2804.    variable is accessed, MarxMenu acts upon the variable that the pointer
  2805.    variable is pointing too. Pointer variables are set using the Loc
  2806.    (location) command.
  2807.  
  2808.     Example:
  2809.       Var A B C
  2810.  
  2811.     A = Loc B
  2812.  
  2813.    MarxMenu supports complex location pointers and pointers to other
  2814.    pointers. MarxMenu will resolve all referrences till real data is found.
  2815.  
  2816.     Example:
  2817.     B = Loc A
  2818.     C = Loc B
  2819.     C[5] = 20
  2820.     Writeln A[5]  ;returns 20
  2821.  
  2822.    Pointers can also be passed as parameters to procedures. Thus if A is an
  2823.    array of strings we can sort A as follows:
  2824.  
  2825.     Procedure SortTest (TestArray)
  2826.        SortArray(TestArray)
  2827.     EndProc
  2828.  
  2829.     SortTest (Loc A)  ;sorts array A
  2830.  
  2831.  
  2832.  
  2833.    Computer Tyme MarxMenu Users Manual                     Page 40
  2834.    _______________________________________________________________
  2835.  
  2836.  
  2837.    COMMENTS IN MENU FILES   COMMENTS IN MENU FILES   COMMENTS IN MENU FILES
  2838.  
  2839.    MarxMenu has three ways to add comments to a menu file. The first way is
  2840.    with the Comment command.
  2841.  
  2842.     Comment
  2843.     ========================
  2844.     This is a comment block.
  2845.     ========================
  2846.     EndComment
  2847.  
  2848.    All lines up to EndComment are ignored.
  2849.  
  2850.    The second way is with a ';'. All text to the right of the ';'
  2851.    (semicolon) is ignored.
  2852.  
  2853.     BlankTime = 20  ;this is where we set the blank time.
  2854.  
  2855.    The third way is using {} or curly braces. Anything inside the curly
  2856.    braces is ignored. Curly braces can be nested.
  2857.  
  2858.     {All of {this} is a comment.}
  2859.  
  2860.    Comments are ignored by the compiler and cost you nothing in execution
  2861.    speed. Comments can save you a lot of time if you have to come back
  2862.    later and work on your menu, or if someone else has to work on it.
  2863.    Therefore, I encourage you to use comments as much as possible.
  2864.  
  2865.    THE MARXMENU COMPILER   THE MARXMENU COMPILER   THE MARXMENU COMPILER
  2866.  
  2867.    MarxMenu reads your MNU files and creates MRX files. These MRX files are
  2868.    a highly digested form of the MNU file that you created. MRX files are
  2869.    the compiled files.
  2870.  
  2871.    When you run MarxMenu, the interpreter MARXMENU.EXE looks for the menu
  2872.    file with the MRX extension. If it doesn't find it, MARXMENU.EXE will
  2873.    automatically load MARXCOMP.EXE and compile the menu. MARXMENU.EXE also
  2874.    compares the file dates of the MNU and the MRX files. If the MNU file is
  2875.    newer than the MRX file, the compiler will be loaded.
  2876.  
  2877.    MarxMenu will also force a compile if the MRX file was not compiled by
  2878.    the same version and release date of the MarxMenu you are using. MRX
  2879.    files are not compatible from one version of MarxMenu to the next.
  2880.  
  2881.    You can also force a compile from the command line by typing MARXCOMP
  2882.    <menu>. If you are on a network and using MarxMenu to log you in, make
  2883.    sure you run the compiler if you change your login menu file.
  2884.  
  2885.  
  2886.  
  2887.    Computer Tyme MarxMenu Users Manual                     Page 41
  2888.    _______________________________________________________________
  2889.  
  2890.  
  2891.    Once your menus are written, you can remove the MNU file and
  2892.    MARXCOMP.EXE from the system. This prevents anyone from modifying your
  2893.    menus. The MRX files are scrambled for security. This prevents probing
  2894.    eyes from reading strings in the MRX files.
  2895.  
  2896.    MARXMENU LANGUAGE RULES   MARXMENU LANGUAGE RULES   MARXMENU LANGUAGE RULES
  2897.  
  2898.    MarxMenu interpretation is left to right and doesn't have any operator
  2899.    precidence. You can control the order of evaluation by using
  2900.    parentheses.
  2901.  
  2902.     Examples:
  2903.  
  2904.       2 + 3 * 4      ;returns 20
  2905.       2 + (3 * 4)    ;returns 14
  2906.  
  2907.       if A > 4 or B < 6 then ...      ;error
  2908.       if (A > 4) or (B < 6) then ...  ;correct
  2909.  
  2910.    Statements are limited to one line and lines are limited to 200
  2911.    characters.
  2912.  
  2913.    COMPILER COMPATIBILITY   COMPILER COMPATIBILITY   COMPILER COMPATIBILITY
  2914.  
  2915.    The MarxMenu compiler is fully compatible with earlier versions of
  2916.    MarxMenu with a few exceptions. The new compiler does a lot more error
  2917.    checking than earlier versions of MarxMenu and will catch errors that
  2918.    you used to get away with. Other than that, the only difference you
  2919.    should notice will be a speed increase.
  2920.  
  2921.    Earlier versions of MarxMenu had separate names for variable types. The
  2922.    names $VAR, BVAR, #VAR, and FILEVAR act the same as typing VAR.
  2923.  
  2924.    Very early versions of MarxMenu had a different form of the USEARROWS
  2925.    command that required 4 to 5 numbers after it. If you run into this
  2926.    error, just get rid of the numbers after USEARROWS and it will work
  2927.    fine.
  2928.  
  2929.  
  2930.  
  2931.    Computer Tyme MarxMenu Users Manual                     Page 42
  2932.    _______________________________________________________________
  2933.  
  2934.  
  2935.    A WORD ABOUT DOS VERSIONS .....   A WORD ABOUT DOS VERSIONS .....   A WORD ABOUT DOS VERSIONS .....
  2936.  
  2937.    Versions of DOS below 3.3 will cause MarxMenu to use 3.5k of ram where
  2938.    3.3 DOS and above use no memory. 3.2 DOS is very buggy and should be
  2939.    replaced. 3.1 DOS isn't too bad for bugs but if you're using the BACKUP
  2940.    and RESTORE programs that came with it, you're in trouble. They don't
  2941.    work on large files. You'll find that out if you try to restore one of
  2942.    them.
  2943.  
  2944.    MS-DOS 4.01 seems to be pretty clean provided you have the April-89
  2945.    release or later. To determine if you do, check the file date on
  2946.    COMMAND.COM. Earlier versions of DOS 4.01 have SERIOUS BUGS. If you are
  2947.    running any DOS 4 earlier than April-89 you should upgrade immediately.
  2948.  
  2949.    We are happy to announce that MarxMenu runs under DOS 5.0 with no
  2950.    problems and requiring no modifications. One feature implemented is the
  2951.    Idle Loop call which allows MarxMenu to conserve CPU power when it's not
  2952.    doing anything. This makes it work better under DesqView and Windows.
  2953.  
  2954.    Speaking of Windows, MarxMenu is not a Windows program. It can however
  2955.    be used to start Windows programs and is can be run under Windows.
  2956.    Windows however is an extremely unstable environment. If for some reason
  2957.    you're having trouble with MarxMenu and Windows, it's Windows fault. In
  2958.    spite of glowing reviews that magazine writers seem compelled to write,
  2959.    I reccommend avoiding Windows unless you have a program that requires
  2960.    Windows to run.
  2961.  
  2962.    DR-DOS or EZ-DOS are pretty good also. It is very compatible as long as
  2963.    you don't get too strange with it. I recommend version 3.4 or later.
  2964.    DR-DOS has a nasty COMSPEC bug in versions 5 and 6 when running a second
  2965.    COMMAND.COM shell started from a network drive.
  2966.  
  2967.    4DOS is also pretty good but sometimes some of the advanced features in
  2968.    this product can cause it to behave differently than DOS. This requires
  2969.    extra care when writing your menus.
  2970.  
  2971.    MarxMenu should work correctly on 386 type multiuser operating systems
  2972.    such as Digital Research's Concurrent DOS 386 or SCO VPIX DOS emulators
  2973.    and PCMOS. Under these systems you will have to set the TASK environment
  2974.    variable if you are running MarxMenu in multiple tasks.
  2975.  
  2976.    MarxMenu will not run correctly under DesqView 2.26. It will run under
  2977.    2.25 or 3.21. So if you are running 2.26, it needs to be upgraded.
  2978.    MarxMenu contains several support functions for DesqView including
  2979.    DesqView API calls to control the DesqView environment.
  2980.  
  2981.    Although I haven't tested MarxMenu in the OS/2 1.3 compatibility box, I
  2982.    have had good success with MarxMenu under OS/2 2.0. I have been able not
  2983.    only to run DOS programs but OS/2 programs as well. If set up right
  2984.    MarxMenu can spawn multiple tasks of both DOS and OS/2 applications.
  2985.  
  2986.  
  2987.  
  2988.    Computer Tyme MarxMenu Users Manual                     Page 43
  2989.    _______________________________________________________________
  2990.  
  2991.  
  2992.    If you are running under some weird DOS and are having problems, try it
  2993.    under "regular" DOS and see if it goes away. If it does, try to find out
  2994.    what it is about your weird DOS that makes it not work right. I am
  2995.    interested in being compatible with as many systems as I can. Let me
  2996.    know if you are having problems. But also, try to get your weird DOS
  2997.    vendors to clean up their act.
  2998.  
  2999.    A WORD ABOUT BUGS .....   A WORD ABOUT BUGS .....   A WORD ABOUT BUGS .....
  3000.  
  3001.    Although I try to create perfect bug free software, every now and then
  3002.    even I make a mistak. If you find one, let me know and I'll fix it. My
  3003.    standard is to not only have all the functions of MarxMenu work
  3004.    correctly, but to be as intuitive and full featured as possible.
  3005.  
  3006.    TIPS FROM THE MASTER   TIPS FROM THE MASTER   TIPS FROM THE MASTER
  3007.  
  3008.    Since MarxMenu is a programming language, I want to talk about what
  3009.    programming is and how it is accomplished. I want to dispel some myths
  3010.    and fears relating to it and introduce you to techniques that will help
  3011.    you write code neatly, quickly, and efficiently. From the outside,
  3012.    programming looks like magic; but once you know a few of the tricks, its
  3013.    really not too hard.
  3014.  
  3015.    Many of us who were raised on 50s and 60s science fiction television
  3016.    learned that it is the brainy types who deal with computers. It almost
  3017.    gives you the impression that the computer is smart and you are dumb. As
  3018.    you use the computer, it is evaluating you, and if it figures out that
  3019.    its smarter than you, it can get your job and replace you.
  3020.  
  3021.    COMPUTERS DO SIMPLE TASKS   COMPUTERS DO SIMPLE TASKS   COMPUTERS DO SIMPLE TASKS
  3022.  
  3023.    A computer is a simple device. It does simple tasks. It just does them
  3024.    very fast and accurately. Computers don't even know basic things like
  3025.    how to write letters on the screen or how to read the keyboard. These
  3026.    are programs that the computer runs. Someone had to program your
  3027.    computer to do even the simplest of tasks.
  3028.  
  3029.    As you learn to use MarxMenu start with the simple menus. The SAMPLE.MNU
  3030.    is a very easy program. Study it and understand how it works. Make a
  3031.    copy of it and change one selection to run one of your programs.
  3032.  
  3033.    Once you have changed one selection, change several more. Now MarxMenu
  3034.    is running your programs, and you have made it work. Then try something
  3035.    new. Add more selections. Change the size and position of the box to fit
  3036.    your needs.
  3037.  
  3038.    Take the time to play with it. Try new commands. Build up your menu. Be
  3039.    artistic. The more you work with it, the more you will learn.
  3040.  
  3041.  
  3042.  
  3043.    Computer Tyme MarxMenu Users Manual                     Page 44
  3044.    _______________________________________________________________
  3045.  
  3046.  
  3047.    COMPLEX TASKS ARE MADE OF SIMPLE TASKS   COMPLEX TASKS ARE MADE OF SIMPLE TASKS   COMPLEX TASKS ARE MADE OF SIMPLE TASKS
  3048.  
  3049.    As you learn more about MarxMenu, move on to QUICK.MNU. Here we use more
  3050.    of the power of the MarxMenu language. As you study this menu, you will
  3051.    notice something. Even though it looks complex, it is really a
  3052.    collection of simple tasks. Understand how the moving windows work.
  3053.    Understand that the pop-up menus are just like the main menu. You will
  3054.    see that it is really not a complex menu at all. It is a lot of simple
  3055.    processes hooked together.
  3056.  
  3057.    That is one of the main concepts behind programming. Complex tasks are
  3058.    built out of simple tasks. As you learn the simple tasks, you will
  3059.    quickly understand how to connect them to accomplish complex tasks.
  3060.  
  3061.    When one sees a castle, one can't help but to be impressed. But castles
  3062.    are made of stones. And you can't build castles until you understand how
  3063.    stones work. Then you realize that a castle is just a bunch of stones
  3064.    hooked together. Programming is just like that.
  3065.  
  3066.    To successfully understand MarxMenu, start at the bottom and work your
  3067.    way up. Each little trick you learn becomes another building block for
  3068.    the next trick. What you start with becomes the foundation for the work
  3069.    that you will eventually produce.
  3070.  
  3071.    LEARNING GOOD PROGRAMMING HABITS   LEARNING GOOD PROGRAMMING HABITS   LEARNING GOOD PROGRAMMING HABITS
  3072.  
  3073.    Programming has its pitfalls, here I hope to give you some tips that
  3074.    will help you avoid common mistakes. This, I hope will give you a head
  3075.    start on the road to MarxMenu being done right.
  3076.  
  3077.    The first concept is patience. Rome wasn't built in a day. You may not
  3078.    be able to write grand and glorious menus the first try. In fact, you
  3079.    may have trouble getting the damn thing to work at all. As you have
  3080.    probably already noticed, no program is perfect. Sometimes there are
  3081.    errorrs in the manual. Sometimes it just doesn't work like you expected,
  3082.    or does not work the same way as other programs that are familiar to
  3083.    you.
  3084.  
  3085.    But, once you complete the installation, give it some time and realize
  3086.    that there is a lot of potential here. Approach all challenges with a
  3087.    good attitude.
  3088.  
  3089.  
  3090.  
  3091.    Computer Tyme MarxMenu Users Manual                     Page 45
  3092.    _______________________________________________________________
  3093.  
  3094.  
  3095.    USE LONG NAMES   USE LONG NAMES   USE LONG NAMES
  3096.  
  3097.    I learned computers the hard way. Out on the streets. Hanging around
  3098.    with other computer nerds in the late 70s who never went to college
  3099.    either. I was known as a Bit Wit. My first real computer was an IMSAI
  3100.    kit. Actually, it wasn't all IMSAI, it was a combination of several kits
  3101.    where no two boards came from the same supplier. It was in an IMSAI box,
  3102.    so I call it an IMSAI.
  3103.  
  3104.    It was all supposed to work together the salesman told me the day before
  3105.    they went out of business. And it all did after some redesigning. I was
  3106.    tired of fixing CB radios for a living and decided that computers were
  3107.    here to stay and that I was going to learn about them.
  3108.  
  3109.    With that in mind, everything that went wrong became an opportunity for
  3110.    growth. Not that I looked forward to things not working. I programmed
  3111.    the thing from scratch, loading binary codes into memory from an array
  3112.    of switches on the front panel.
  3113.  
  3114.    The first program I wrote ran the EPROM burner, which was the only
  3115.    storage device I had. After I saved this program on a chip, I used it to
  3116.    load the second program onto the chip.
  3117.  
  3118.    Eventually I wrote enough software to talk to the screen and keyboard.
  3119.    Now I could type hex codes on the screen and save them to a chip.
  3120.    Eventually I wrote a tape driver and could save stuff on tape. Later, I
  3121.    traded for a North Star disk drive and had a disk system. One 90k
  3122.    floppy. I thought I was in heaven.
  3123.  
  3124.    I was intimately familiar with my computer. All my programs were in
  3125.    object code with no documentation whatsoever. At that point, a friend of
  3126.    mine, Rufus, turned me on to a language called FORTH.
  3127.  
  3128.    Being an interesting language and very powerful, I typed in the whole
  3129.    compiler in hex and adapted it to work on my system. Once I got Forth
  3130.    up, I wrote a line editor in it. I then used the line editor to write a
  3131.    screen editor. With the screen editor, I rewrote Forth in Forth. The
  3132.    language compiled itself.
  3133.  
  3134.    From working with Forth (which is as much a religion as a programming
  3135.    language) I learned both good and bad habits. Forth is a write only
  3136.    language and is almost impossible to read even with the best of
  3137.    documentation. On the other hand, it is as close to the machine as you
  3138.    can get in a high level language.
  3139.  
  3140.  
  3141.  
  3142.    Computer Tyme MarxMenu Users Manual                     Page 46
  3143.    _______________________________________________________________
  3144.  
  3145.  
  3146.    After opening up a computer store in 1984, it became time to make the
  3147.    jump from CP/M to the DOS world. Turbo Pascal offered an interesting
  3148.    solution. They had both a CP/M and DOS compiler. This meant that
  3149.    programs I wrote would run on both machines. The thing that struck me
  3150.    about Pascal was that I could read it better than Forth, and I didn't
  3151.    even know the language. Not only that, but I could follow the programs
  3152.    that other people wrote and incorporate their code into my programs.
  3153.  
  3154.    The more programs I wrote, the more I came to appreciate a language that
  3155.    was reader friendly. I could manage my programs much easier without
  3156.    having to remember so much. Other people could follow what I was doing
  3157.    easier.
  3158.  
  3159.    The important thing I learned was that readability is very important in
  3160.    a program. The more complex the program, the more important readability
  3161.    becomes.
  3162.  
  3163.    One of the main design factors in the MarxMenu language is readability.
  3164.    I could have used short names for my commands and it's not like I like
  3165.    to type. I'm still on just two fingers here. Its just that descriptive
  3166.    names are so much more meaningful when putting simple processes together
  3167.    to create complex processes.
  3168.  
  3169.    The point (finally) is, when creating variable names, or procedure
  3170.    names, use long meaningful names. It may take more typing, but it takes
  3171.    a lot less thinking and remembering later on. Consider the following
  3172.    example in choosing variable names.
  3173.  
  3174.     Var KlingonsDestroyedInBattle
  3175.     Var K
  3176.  
  3177.    In the above example, it is obvious which one tells you more about what
  3178.    information is stored in the variable.
  3179.  
  3180.    USE COMMENTS LIBERALLY   USE COMMENTS LIBERALLY   USE COMMENTS LIBERALLY
  3181.  
  3182.    Even though MarxMenu is easy to read, it still should be commented. The
  3183.    examples that come with this disk do not have as many comments as they
  3184.    should. Don't do as I do, do as I say. I'm lazy and a bad example.
  3185.  
  3186.    Comments are not compiled in your MRX files and cost you nothing at
  3187.    execution time. In order to make commenting easy, I have provided three
  3188.    separate comment commands. Learn these commands first.
  3189.  
  3190.    Every menu should include a title comment. This should include the name
  3191.    and phone number of the person who wrote it. If you have a problem with
  3192.    a menu and you send it to me, I expect a title comment. That way I can
  3193.    call you about it.
  3194.  
  3195.     Comment
  3196.     ====================================================================
  3197.  
  3198.  
  3199.  
  3200.    Computer Tyme MarxMenu Users Manual                     Page 47
  3201.    _______________________________________________________________
  3202.  
  3203.  
  3204.     This comment was created by Marc Perkel 1-417-866-1222
  3205.  
  3206.     Last Updated: 01-28-90
  3207.  
  3208.     This form of comment block is better than using ';' because not using ;
  3209.     allows you to turn your word wrap feature on and do some professional
  3210.     looking editing in the comment block. This kind of comment block should
  3211.     be at the beginning of each and every menu you create.
  3212.  
  3213.     The top and bottom bars are for looks only and are not necessary to the
  3214.     comment. I strongly encourage you to use bars and do things for looks
  3215.     in source code. Looks are very important and you should put as much
  3216.     care into your comments as you do in writing a business letter.
  3217.  
  3218.     If you learn MarxMenu well, your source code may be part of your next
  3219.     job interview as you move up the corporate ladder. So you want it to
  3220.     look good.
  3221.  
  3222.     By the way, if you upload your menus to my bulleten board, I expect a
  3223.     comment block at the top of your menu with your phone number so I can
  3224.     get back to you.
  3225.  
  3226.     ====================================================================
  3227.     EndComment
  3228.  
  3229.    INDENT YOUR CODE   INDENT YOUR CODE   INDENT YOUR CODE
  3230.  
  3231.    As programs get more complex, it gets harder to match the IFs with the
  3232.    ELSEs and the ENDIFs. This is where indenting comes in. It creates a
  3233.    logical grouping of statements and you can easily see what goes with
  3234.    what.
  3235.  
  3236.  
  3237.  
  3238.    Computer Tyme MarxMenu Users Manual                     Page 48
  3239.    _______________________________________________________________
  3240.  
  3241.  
  3242.     Procedure IfDemo
  3243.        IF <condition>
  3244.           <statement>
  3245.           <statement>
  3246.        ELSEIF <condition>
  3247.           <statement>
  3248.        ELSEIF <condition>
  3249.           <statement>
  3250.           <statement>
  3251.        ELSE
  3252.           <statement>
  3253.           <statement>
  3254.           WHILE <condition>
  3255.              <statement>
  3256.              <statement>
  3257.           ENDWHILE
  3258.           <statement>
  3259.        ENDIF
  3260.        <statement>
  3261.     EndProc
  3262.  
  3263.    You can easily see how this helps you follow what you are writing. Now
  3264.    here's a new trick. If you are using an IF, and plan to use an ELSE and
  3265.    an ENDIF, on the line under the IF statement, type in your ELSE and
  3266.    ENDIF lines. Then go back and insert your statements in between these
  3267.    lines. This will help you avoid forgetting the ENDIF or getting mixed up
  3268.    as to which IF matches which ELSE.
  3269.  
  3270.    A similar trick can be done with parens and brackets. When typing a left
  3271.    paren, type the matching right paren with it. Then fill in the code you
  3272.    want to put inside the parens or brackets.
  3273.  
  3274.    FOR DUPLICATE TASKS, USE PROCEDURES   FOR DUPLICATE TASKS, USE PROCEDURES   FOR DUPLICATE TASKS, USE PROCEDURES
  3275.  
  3276.    As menus become longer and more complex, many times you are duplicating
  3277.    a process that you already have written. Although it is easy to copy a
  3278.    block of code, it is better to create a procedure.
  3279.  
  3280.    With procedures, the process is put in one place and is given a name.
  3281.    Preferably a long meaningful name. Once this procedure is defined and
  3282.    named, it can be used as if it were part of the MarxMenu language. This
  3283.    makes menus smaller and easier to read. It is also a way for you to
  3284.    combine small processes into large processes. Procedures can be built
  3285.    using other procedures.
  3286.  
  3287.    Once you have a process figured out and working in a procedure, the
  3288.    whole process becomes a black box with a name that you can use
  3289.    elsewhere. The whole process is reduced down to a name that just works!
  3290.  
  3291.  
  3292.  
  3293.    Computer Tyme MarxMenu Users Manual                     Page 49
  3294.    _______________________________________________________________
  3295.  
  3296.  
  3297.    Another advantage of procedures is that if circumstances change and the
  3298.    procedure needs to be modified, you only make a change one place in your
  3299.    menus, and everything that uses that procedure is automatically changed.
  3300.    This makes menu maintenance easier.
  3301.  
  3302.    DON'T PROGRAM YOURSELF INTO A CORNER   DON'T PROGRAM YOURSELF INTO A CORNER   DON'T PROGRAM YOURSELF INTO A CORNER
  3303.  
  3304.    Using the above techniques will allow you to write very complex menu
  3305.    systems. Failing to use these techniques can limit what you can
  3306.    accomplish. There is a term called "programming yourself into a corner"
  3307.    which refers to a program that is so poorly written, that it can't be
  3308.    modified to accommodate changes and improvements.
  3309.  
  3310.    The height of your programming abilities depends on the foundation on
  3311.    which they are built. You must avoid rushing to the top without first
  3312.    creating a firm foundation on which to build. Good technique is the
  3313.    foundation for good programming. You will have to learn it eventually,
  3314.    it is more efficient to do it right than it is to do it over.
  3315.  
  3316.    Adopting good programming habits reminds me of my favorite light bulb
  3317.    joke:
  3318.  
  3319.    Q. How many psychologists does it take to change a light bulb?
  3320.  
  3321.    A. Only one, but the light bulb has to want to change.
  3322.  
  3323.    FOR THE POWER USER:   FOR THE POWER USER:   FOR THE POWER USER:
  3324.  
  3325.    I originally wrote MarxMenu on a dare. I said that in one afternoon I
  3326.    could write a better menu system than one of the most popular menu
  3327.    systems. I met the challenge and then found that there is a lot of
  3328.    demand for power in a menu system. Friends started asking for this and
  3329.    that feature and this program has gone far beyond what I ever intended.
  3330.  
  3331.    The demand for more features has outpaced my ability to keep up with the
  3332.    documentation standards that I expect from other software packages that
  3333.    I buy. Please bear with me. If you find any errors in the manual, or
  3334.    bugs in the program, please let me know and I'll try to correct any
  3335.    problems.
  3336.  
  3337.    I also appreciate your suggestions for improvements. Many of the
  3338.    features included are a result of requests you have made. Many of you
  3339.    are using this program in ways I never dreamed.
  3340.  
  3341.    The main design philosophy behind this product is POWER and Flexibility.
  3342.    I am also committed to keeping the source code as readable as possible.
  3343.    I am loyal to the concept of using NO RAM. None of MarxMenu stays
  3344.    resident. Because of this I can claim that if you are having some kind
  3345.    of problem, it's not the fault of MarxMenu being resident, because
  3346.    MarxMenu is not resident. Also, using NO RAM allows loading of TSR's
  3347.    (memory resident programs) from the menu.
  3348.  
  3349.  
  3350.  
  3351.    Computer Tyme MarxMenu Users Manual                     Page 50
  3352.    _______________________________________________________________
  3353.  
  3354.  
  3355.    For computer consultants, MarxMenu is an excellent way to make money.
  3356.    You can provide your clients with professional looking menu systems
  3357.    customized (by you) to fit their needs. You can provide complex menu
  3358.    structures not possible with any other menu system. And, because
  3359.    MarxMenu uses NO RAM, you don't have to worry about conflicts between
  3360.    MarxMenu and any other software product.
  3361.  
  3362.    Although MarxMenu is copyrighted, the program is not copy protected.
  3363.    There is nothing to prevent you from making hot copies and giving them
  3364.    away to all your clients. I would like to point out that when you give
  3365.    away something you should be selling you lose respect from your clients
  3366.    and attract those who expect you to work for free. You will make more
  3367.    money if you play by the rules. My best and most profitable clients use
  3368.    no hot software whatsoever. Think about it.
  3369.  
  3370.    WHERE MARXMENU IS HEADING   WHERE MARXMENU IS HEADING   WHERE MARXMENU IS HEADING
  3371.  
  3372.    MarxMenu will continue to grow and develope. Because MarxMenu is an
  3373.    overlaid program I have the ability to add as many features as I want
  3374.    without slowing down load or processing speed. In fact MarxMenu is 10
  3375.    times as fast today as it was in 1989 and its vocabulary of commands has
  3376.    grown 10 times as well.
  3377.  
  3378.    I'm often asked the question, what other operating systems will I
  3379.    support? Will there be a Windows version? An OS/2 version? Unix?
  3380.  
  3381.    Let me say first that my primary commitment is to the OS that most
  3382.    people actually use, and that is DOS. I am not moved by the industry
  3383.    politics. I focus on the systems that make computers and networks
  3384.    actually work.
  3385.  
  3386.    So for those of you who are asking the question "Will there be a Windows
  3387.    version of MarxMenu?" The answer is no. The reason is in my view,
  3388.    windows is too unstable a platform in which to develop code for. As I
  3389.    see it, Windows is a programmer angry environment and is fatally flawed
  3390.    by design. I consider this path a mistake and a mistake that I am not
  3391.    going to make.
  3392.  
  3393.    Will there be an OS/2 version? Likely. This OS seems to be going in the
  3394.    right direction. I have been able to control both DOS and OS/2 tasks
  3395.    from the VDM. Although the two major OS players are equally arrogant on
  3396.    what OS they are going to force down our throats, at least the one from
  3397.    IBM actually works.
  3398.  
  3399.  
  3400.  
  3401.    Computer Tyme MarxMenu Users Manual                     Page 51
  3402.    _______________________________________________________________
  3403.  
  3404.  
  3405.    A WORD TO WRITERS AND REVIEWERS   A WORD TO WRITERS AND REVIEWERS   A WORD TO WRITERS AND REVIEWERS
  3406.  
  3407.    MarxMenu is a multi-level product fulfilling the needs of a large
  3408.    variety of computer users. It is difficult to compare this product on a
  3409.    feature to feature basis. This is because MarxMenu has about 10 times as
  3410.    many features as any other menu system. These features allow this
  3411.    product to target a very broad variety of computer users, from the
  3412.    novice user, who will only use the LEVEL1 or QUICK menus, to large
  3413.    companies with hundreds of file servers controlled through the MarxMenu
  3414.    language.
  3415.  
  3416.    One common mistake that writers make when evaluating MarxMenu, is in the
  3417.    area of ease of use. If you are looking for ease of use, stick with the
  3418.    simple menus and the self-configuring menus such as the LEVEL1, QUICK
  3419.    and QUICKNOV examples. By looking at it this way, MarxMenu will be as
  3420.    easy to use as any other menus system out there and can be compared for
  3421.    similar features. Even though MarxMenu supports complex commands, it is
  3422.    not necessary to use them in simple menus.
  3423.  
  3424.    If you are doing a comparative review, please let me know on what basis
  3425.    you are making comparisons. This way I can assist you by providing you
  3426.    accurate information in the area of your interest. If you are looking
  3427.    for simple, I can show you simple; if you are looking for power, I can
  3428.    show you power.
  3429.  
  3430.    On the other hand, if you are reviewing power tools and network
  3431.    utilities, you might want to look at the Network Survival Kit and not
  3432.    just MarxMenu. So if you have a copy of only this program, give me a
  3433.    call and I'll get you the latest and greatest.
  3434.  
  3435.    In addition to our software, we also have color prints and color slides
  3436.    available as well as product literature and sample reviews. These are
  3437.    available to make your job easier and help you make those deadlines.
  3438.  
  3439.    MarxMenu tends to be best reviewed as a long article rather than a short
  3440.    one. It is very good if you have a lot of space to fill. With a long
  3441.    article, you can get really in depth with what MarxMenu is able to do.
  3442.  
  3443.    Any publication which reviews any of my products gets a site license to
  3444.    that product whether I like the review or not. Our position is that if
  3445.    you are using MarxMenu yourself, you will get to know it better.
  3446.  
  3447.    So far, as of the date I write this, no writer has written an article
  3448.    about MarxMenu that I feel covered what this product is really capable
  3449.    of doing. Consider this a challenge.
  3450.  
  3451.    Any questions you have about any of my products, feel free to call. The
  3452.    main thing I ask is that you get the product name, price, our address,
  3453.    and our phone number right.
  3454.  
  3455.  
  3456.  
  3457.    Computer Tyme MarxMenu Users Manual                     Page 52
  3458.    _______________________________________________________________
  3459.  
  3460.  
  3461.    USING MARXHELP   USING MARXHELP   USING MARXHELP
  3462.  
  3463.    MarxHelp is a TSR pop-up help program for MarxMenu. It acts as an online
  3464.    reference guide to all of the MarxMenu commands. MarxHelp only takes 8k
  3465.    of ram and is very useful while writing your MarxMenu applications.
  3466.  
  3467.    To load MarxHelp type MARXHELP at the command line. Then if you want to
  3468.    pop-up an index press Shift-F3. The Shift-F2 key will repeat your last
  3469.    help topic and Shift-F1 will look up the word your cursor is on.
  3470.  
  3471.    To get more help on MarxMenu type MarxHelp /?. If you need to unload
  3472.    MarxHelp from memory, type MarxHelp /U.
  3473.  
  3474.    MarxHelp comes with the Computer Tyme Network Survival Kit. It can also
  3475.    be downloaded from our support BBS. It does not come bundled with the
  3476.    single user version.
  3477.  
  3478.    PRINTING THE EXAMPLE FILES   PRINTING THE EXAMPLE FILES   PRINTING THE EXAMPLE FILES
  3479.  
  3480.    MarxMenu comes with several example programs from simple to complex. The
  3481.    first thing to do is print the sample menus and study them. Start with
  3482.    the easy ones. You may never need to use any of the more complex ones,
  3483.    but if you do, a large variety of advanced techniques are demonstrated.
  3484.  
  3485.    By studying the sample menus, and comparing them to this manual, it
  3486.    should be fairly easy to become productive writing your own menus.
  3487.  
  3488.    SECURITY ISSUES   SECURITY ISSUES   SECURITY ISSUES
  3489.  
  3490.    Different users have different security needs that range from none to
  3491.    extreme. If you are in the none category, then you can skip this
  3492.    chapter. But if you need all the security you can get, then read on.
  3493.  
  3494.    First of all, DOS is not a secure operating system. There are various
  3495.    third party programs out there but what I'm going to cover here is how
  3496.    to make DOS secure as possible working with what you get with DOS.
  3497.  
  3498.    The first thing to do is add the command BREAK=OFF to your CONFIG.SYS
  3499.    file. This prevents programs from breaking out of batch files. Avoid
  3500.    using commands that are internal DOS commands like DIR from inside a
  3501.    menu or inside batch files. Use the D.EXE program instead.
  3502.  
  3503.    Use the LockWord option in the screen blanker so that if a menu is left
  3504.    unattended, it will not be accessable to just anyone walking up to a
  3505.    machine. The LockWord command requires the user type a password to
  3506.    release the screen blanker. If you are on a Novell network, you can use
  3507.    the UseNovPassword command. This forces the user to type their Novell
  3508.    password to unblank the screen.
  3509.  
  3510.  
  3511.  
  3512.    Computer Tyme MarxMenu Users Manual                     Page 53
  3513.    _______________________________________________________________
  3514.  
  3515.  
  3516.    If a menu choice accesses sensitive materials, then put a password on
  3517.    it. Also, make sure the SUPERVISOR user has a password. There are many
  3518.    times I've walked up to a server and logged in as supervisor and got
  3519.    right in. Make sure that intruder detection is set on. If you don't know
  3520.    what intruder detection is, read the Novell manuals.
  3521.  
  3522.    You can also use the LogoffTime command to log users off the network
  3523.    after a given amount of inactivity. This also helps kick people off so
  3524.    that you can upgrade MarxMenu from time to time. (MARXMENU.OVR can't be
  3525.    updated on a network unless all users are out of the menu.)
  3526.  
  3527.    If you have applications that allow you to shell to DOS, you can prevent
  3528.    them from getting to DOS by changing your COMSPEC to point to something
  3529.    other than COMMAND.COM. You could also rename COMMAND.COM in case a
  3530.    program is looking for this file by name. If this doesn't work for you
  3531.    then you can use the COMSP.EXE program to do the same thing.
  3532.  
  3533.    Another defense is to lock the door to the computer room at night and
  3534.    teach employees security policies and make sure they use them. Security
  3535.    policies include such rules as not having your password written on a
  3536.    stick-em note stuck on the side of your monitor.
  3537.  
  3538.    If you are on a network, buy diskless workstations. People can't copy
  3539.    files on or off a network that doesn't have a disk drive. It helps keep
  3540.    viruses off your server and lets the network administrators control what
  3541.    is and isn't on the network.
  3542.  
  3543.    KEEPING USERS IN THE MENU   KEEPING USERS IN THE MENU   KEEPING USERS IN THE MENU
  3544.  
  3545.    Some people need to keep users in the menu and prevent them from
  3546.    escaping to a command line no matter what. There are several things you
  3547.    need to do to accomplish this. The first thing is to use BREAK.SYS to
  3548.    prevent breaking out of batch files. Then you use a shell statement to
  3549.    load COMMAND.COM temporary instead of permanent. Then you use COMSP.EXE
  3550.    to prevent programs from shelling out to DOS.
  3551.  
  3552.  
  3553.  
  3554.    Computer Tyme MarxMenu Users Manual                     Page 54
  3555.    _______________________________________________________________
  3556.  
  3557.  
  3558.    USING BREAK.SYS   USING BREAK.SYS   USING BREAK.SYS
  3559.  
  3560.    MarxMenu comes with a device driver called BREAK.SYS. This program
  3561.    enhances the BREAK ON and BREAK off functions of DOS to prevent users
  3562.    from using CTRL-C to get out of batch files.
  3563.  
  3564.    Unlike all the other similar programs this one is smart. It only kills
  3565.    CTRL-C if your in COMMAND.COM but allows your applications to see
  3566.    CTRL-C. And, it only uses about 400 bytes of ram.
  3567.  
  3568.    All you have to do is add a line to your CONFIG.SYS file:
  3569.  
  3570.    DEVICE=BREAK.SYS
  3571.  
  3572.    If your using BREAK.SYS with QEMM or other memory manager, load the
  3573.    memory manager first.
  3574.  
  3575.    BREAK.SYS can be enabled or disabled by using the BREAK ON and BREAK OFF
  3576.    commands either from the command line or from batch files.
  3577.  
  3578.    Although BREAK.SYS is better than DOS, it isn't perfect. There are still
  3579.    situations where you can break out of batch files. If it is important to
  3580.    not break out then you can use it as follows:
  3581.  
  3582.    DEVICE=BREAK.SYS /C
  3583.  
  3584.    Using it this way the CTRL-C key is disabled completely. Your
  3585.    application software will not get any CTRL-C.
  3586.  
  3587.    BREAK.SYS has another switch /T that works like /C except that once you
  3588.    execute BREAK ON then it returns to smart CTRL-C handling. The idea here
  3589.    is that more often you need bullet proof protection while the system is
  3590.    booting up, but after going to the main menu you can switch to smart
  3591.    protection. At the end of your bootup batch files add the lines:
  3592.  
  3593.    BREAK ON
  3594.    BREAK OFF
  3595.  
  3596.    This will switch BREAK.SYS into smart mode checking.
  3597.  
  3598.    BREAK.SYS has another feature that makes BREAK ON work better. If you
  3599.    use it like this:
  3600.  
  3601.    DEVICE=BREAK.SYS /B
  3602.  
  3603.    Then when you run BREAK ON and the users presses CTRL-\ it will break
  3604.    you out of programs you might otherwise be stuck in. This feature is
  3605.    great for software developers to use when testing code.
  3606.  
  3607.  
  3608.  
  3609.    Computer Tyme MarxMenu Users Manual                     Page 55
  3610.    _______________________________________________________________
  3611.  
  3612.  
  3613.    USING THE SHELL= COMMAND   USING THE SHELL= COMMAND   USING THE SHELL= COMMAND
  3614.  
  3615.    If you really want to make it impossible to break out to DOS then change
  3616.    you SHELL= statement in your CONFIG.SYS file to read:
  3617.  
  3618.    SHELL=COMMAND.COM /E:400 /C AUTOEXEC.BAT
  3619.  
  3620.    With this command, if they get out of the batch file it locks the system
  3621.    up. In some cases this is better than letting the user get access to the
  3622.    command line.
  3623.  
  3624.    To use this feature you need to stay in a steady stream of batch file
  3625.    all the way to the menu. If you ever exit or break out of the batch
  3626.    files the system locks up. Without the /P switch, COMMAND.COM is never
  3627.    loaded permanent. So if AUTOEXEC and the batch file that they jump to
  3628.    ever finish the computer locks up. You can't break out to COMMAND.COM
  3629.    because there is no COMMAND.COM to break out to.
  3630.  
  3631.    If you try to use this with novell's LOGIN.EXE then you won't be able to
  3632.    use the 'EXIT <string>' command in your login script. This is because
  3633.    EXIT will exit to DOS and lock up. You will need to create a LOG.BAT
  3634.    file as follows:
  3635.  
  3636.     LOG.BAT
  3637.     =======
  3638.     :Start
  3639.     LOGIN
  3640.     REM ** Stay in loop till LOGIN succeeds **
  3641.     if ErrorLevel 1 goto Start
  3642.     ...
  3643.     <other startup commands>
  3644.     ...
  3645.     Marx MainMenu
  3646.  
  3647.    To get to a command line using this system you will need to run
  3648.    COMMAND.COM or DOLIST.EXE from the menu. In the case of COMMAND.COM you
  3649.    will run:
  3650.  
  3651.     COMMAND.COM /E:400
  3652.  
  3653.    This ensures that this second COMMAND.COM has enough environment space
  3654.    to allow for SET commands.
  3655.  
  3656.  
  3657.  
  3658.    Computer Tyme MarxMenu Users Manual                     Page 56
  3659.    _______________________________________________________________
  3660.  
  3661.  
  3662.    MARXMENU COMMANDS   MARXMENU COMMANDS   MARXMENU COMMANDS
  3663.  
  3664.    MarxMenu contains a rich set of commands. They are listed here
  3665.    alphabetically and by command category. You don't have to learn them all
  3666.    so don't let the size of the list scare you.
  3667.  
  3668.    In the following command list, words contained within ( ) are command
  3669.    parameters that must be included after the menu command. If the
  3670.    parameter is not required, it will be contained in [ ]. The numeric
  3671.    range for the <column> parameter is 1 - 80 decimal, and for the <row>
  3672.    parameter the range is 1 - 25, 43, or 50 decimal depending on how many
  3673.    lines your monitor displays.
  3674.  
  3675.    | (Vertical Bar)   | (Vertical Bar)   | (Vertical Bar)
  3676.    Forces MarxMenu interpretation under an OnKey Command. If not for the |
  3677.    (Vertical Bar), the command under an OnKey would be written to a batch
  3678.    file. The | is only used under OnKey commands.
  3679.  
  3680.     Example:
  3681.       OnKey 'S'
  3682.         |password 'hello' 3 4
  3683.         ECHO Type EXIT to return to menu
  3684.         COMMAND.COM
  3685.  
  3686.       OnKey 'X'
  3687.         |if UpperCase(ReadEnv('USERNAME')) = 'SUPERVISOR'
  3688.           SYSCON
  3689.         |else
  3690.         |  SecurityBreach('You do not have access to this function!')
  3691.         |endIf
  3692.  
  3693.    Category: Misc
  3694.  
  3695.    ( : Operator   ( : Operator   ( : Operator
  3696.    Starts logical interpreter grouping.
  3697.  
  3698.    Used to force evalution of an expression other than the normal left to
  3699.    right order.
  3700.  
  3701.     Example:
  3702.       2 * 3 + 2     evaluates to  8
  3703.       2 * ( 3 + 2 ) evaluates to  10
  3704.  
  3705.    Category: Misc
  3706.  
  3707.  
  3708.  
  3709.    Computer Tyme MarxMenu Users Manual                     Page 57
  3710.    _______________________________________________________________
  3711.  
  3712.  
  3713.    ) : Operator   ) : Operator   ) : Operator
  3714.    Ends logical interpreter grouping.
  3715.  
  3716.    See Also: (
  3717.  
  3718.    Category: Misc
  3719.  
  3720.    * : Operator   * : Operator   * : Operator
  3721.    Multiplies two numbers.
  3722.  
  3723.    Category: Math, Float
  3724.  
  3725.    + : Operator   + : Operator   + : Operator
  3726.    Adds two numbers or two strings.
  3727.  
  3728.     Example:
  3729.       "Hello" + " " + "World" = "Hello World"
  3730.       2 + 2 = 4
  3731.  
  3732.    Category: Math, String, Float
  3733.  
  3734.    - : Operator   - : Operator   - : Operator
  3735.    Subtracts two numbers.
  3736.  
  3737.    Category: Math, Float
  3738.  
  3739.    / : Operator   / : Operator   / : Operator
  3740.    Divides two numbers.
  3741.  
  3742.    Category: Math, Float
  3743.  
  3744.    < : Operator   < : Operator   < : Operator
  3745.    Less Than - Compares two numbers or strings.
  3746.  
  3747.    Category: Math, String, Float
  3748.  
  3749.    <= : Operator   <= : Operator   <= : Operator
  3750.    Less Than or Equal - Compares two numbers or strings.
  3751.  
  3752.    Category: Math, String, Float
  3753.  
  3754.    <> : Operator   <> : Operator   <> : Operator
  3755.    Not Equal - Compares two numbers or strings.
  3756.  
  3757.    Category: Math, String, Float
  3758.  
  3759.    = : Operator   = : Operator   = : Operator
  3760.    Equal - Compares two numbers or strings.
  3761.  
  3762.    Category: Math, String, Float
  3763.  
  3764.  
  3765.  
  3766.    Computer Tyme MarxMenu Users Manual                     Page 58
  3767.    _______________________________________________________________
  3768.  
  3769.  
  3770.    > : Operator   > : Operator   > : Operator
  3771.    Greater Than - Compares two numbers or strings.
  3772.  
  3773.    Category: Math, String, Float
  3774.  
  3775.    >= : Operator   >= : Operator   >= : Operator
  3776.    Greater Than or Equal - Compares two numbers or strings.
  3777.  
  3778.    Category: Math, String, Float
  3779.  
  3780.    %MenuFileName : String   %MenuFileName : String   %MenuFileName : String
  3781.    This returns the name of the current menu file including the complete
  3782.    path. It can be used under an OnKey statement to edit the current menu
  3783.    as follows:
  3784.  
  3785.     Example:
  3786.       OnKey 'E'
  3787.         EDIT %MenuFileName
  3788.  
  3789.    Category: String
  3790.  
  3791.    Abs : Number   Abs : Number   Abs : Number
  3792.    Returns the absolute value of a number. The absolute value is the value
  3793.    of the number without the sign.
  3794.  
  3795.     Example:
  3796.        Abs(-6) returns 6
  3797.  
  3798.    Category: Math, Float
  3799.  
  3800.    Actual   Actual   Actual
  3801.    If you want to read or write to a variable directly that is referrencing
  3802.    another variable I have provided the command Actual. Actual overrides
  3803.    any pointers set by the command Loc.
  3804.  
  3805.     Example:
  3806.        Dispose Actual B
  3807.        Actual B = 5
  3808.  
  3809.    See Also: Loc
  3810.  
  3811.    Category: Variable
  3812.  
  3813.  
  3814.  
  3815.    Computer Tyme MarxMenu Users Manual                     Page 59
  3816.    _______________________________________________________________
  3817.  
  3818.  
  3819.    Alias   Alias   Alias
  3820.    Alias <name> = <string>
  3821.    This is a compiler level text substitution command. When <name> is
  3822.    defined as <string> whenever you use <name> its the same to the compiler
  3823.    as if <string> were typed there.
  3824.  
  3825.     Example:
  3826.       Alias TwoPlusThree = "(2 + 3)"
  3827.       .
  3828.       .
  3829.       .
  3830.       2 * TwoPlusThree = 10
  3831.       .
  3832.       Writeln TwoPlusThree
  3833.  
  3834.    Writeln TwoPlusThree is the same as Writeln (2 + 3)
  3835.  
  3836.    Category: Misc
  3837.  
  3838.    AllowAbort (On/Off)   AllowAbort (On/Off)   AllowAbort (On/Off)
  3839.    MarxMenu was written to allow processes to be aborted and in a very
  3840.    smooth way eliminating the need for the user to deal with complicated
  3841.    error logic. In some cases this has gotten in the way of specific
  3842.    control when the user presses the escape key or other error occurs.
  3843.  
  3844.    If AllowAbort is set to off, MarxMenu will continue on to the next
  3845.    command. You can then test LastKey to see if the escape key was pressed.
  3846.    If the user presses escape a nul string is returned.
  3847.  
  3848.    See Also: AllowEsc
  3849.  
  3850.    Category: Misc
  3851.  
  3852.    AllowEsc (On/Off)   AllowEsc (On/Off)   AllowEsc (On/Off)
  3853.    Several MarxMenu commands such as PickOne, PickMany and PickFile allow
  3854.    you to press escape to abort. If you turn AllowEsc off then the escape
  3855.    key is ignored. This forces the user to make a choice.
  3856.  
  3857.    See Also: AllowAbort
  3858.  
  3859.    Category: Misc
  3860.  
  3861.    And : Operator   And : Operator   And : Operator
  3862.    Returns logical And if operators are boolean; or bitwise And if
  3863.    operators are numeric.
  3864.  
  3865.     Example:
  3866.       if (Month = Dec) and (Day = 25) then Writeln 'Merry Christmas!'
  3867.  
  3868.    Category: Math, Boolean
  3869.  
  3870.  
  3871.  
  3872.    Computer Tyme MarxMenu Users Manual                     Page 60
  3873.    _______________________________________________________________
  3874.  
  3875.  
  3876.    AppendArray (Array,Value)   AppendArray (Array,Value)   AppendArray (Array,Value)
  3877.    AppendArray appends Value to the end of an array. The number of elements
  3878.    is increased by one. It is not used to append two arrays "end to end".
  3879.  
  3880.     Example:
  3881.       var X
  3882.       X[1] = 'TEST1'
  3883.       AppendArray(X,'TEST2')
  3884.  
  3885.       Loop X
  3886.          Writeln X[LoopIndex]
  3887.       EndLoop
  3888.  
  3889.     This Prints:
  3890.       TEST1
  3891.       TEST2
  3892.  
  3893.    Category: Array
  3894.  
  3895.    ApplicationMemory : Number   ApplicationMemory : Number   ApplicationMemory : Number
  3896.    Returns the number of bytes of memory available to an application when
  3897.    MarxMenu exits out to the MARX.BAT file. This is the actual amount of
  3898.    ram available to your application.
  3899.  
  3900.    See Also: FreeMemory
  3901.  
  3902.    Category: Memory
  3903.  
  3904.    ArcTan (Radians) : Real   ArcTan (Radians) : Real   ArcTan (Radians) : Real
  3905.    Returns the ArcTangent of a real.
  3906.  
  3907.    Category: Math, Float
  3908.  
  3909.    AssignList (2D Array)   AssignList (2D Array)   AssignList (2D Array)
  3910.    AssignList reads the network assign list table and return a 2
  3911.    dimensional array containing the local names and the network names.
  3912.  
  3913.     Example:
  3914.  
  3915.     var X
  3916.     AssignList (X)
  3917.  
  3918.     Loop X
  3919.        Writeln X[LoopIndex,1] '=' X[LoopIndex,2]
  3920.     EndLoop
  3921.  
  3922.    See Also: CancelListEntry, MakeListEntry
  3923.  
  3924.    Category: Novell, MSNet, Vines
  3925.  
  3926.  
  3927.  
  3928.    Computer Tyme MarxMenu Users Manual                     Page 61
  3929.    _______________________________________________________________
  3930.  
  3931.  
  3932.    BadDate : Boolean   BadDate : Boolean   BadDate : Boolean
  3933.    Set to true if you try to convert a string to a date and the date is
  3934.    invalid.
  3935.  
  3936.    See Also: TimeOf
  3937.  
  3938.    Category: Time
  3939.  
  3940.    Bat (string)   Bat (string)   Bat (string)
  3941.    Used to write a line to the batch file the same way OnKey does. All the
  3942.    same rules apply. The batch file is created when the menu exits.
  3943.    MarxMenu exits with ErrorLevel 0 unless some other value has been
  3944.    specified using the ExitCode command.
  3945.  
  3946.    When using Bat under an OnKey statement, be sure to use the vertical bar
  3947.    in front of it. Bat gives you more control over what is sent to the
  3948.    batch file that MARX.BAT executes.
  3949.  
  3950.     Example:
  3951.       OnKey 'D'
  3952.         CLS
  3953.         |BAT "DIR " + HomeDirectory + '\' + UserName
  3954.         PAUSE
  3955.  
  3956.    See Also: OnKey
  3957.  
  3958.    Category: Execution
  3959.  
  3960.    BatFileName : String   BatFileName : String   BatFileName : String
  3961.    Returns the name of the batch file that MarxMenu would create if
  3962.    MarxMenu were to create a batch file automatically.
  3963.  
  3964.    Category: String
  3965.  
  3966.    BigShadow   BigShadow   BigShadow
  3967.    Selects big shadow type. This is the default shadow.
  3968.  
  3969.    See Also: SmallShadow, ShadowPosition, ShadowColor
  3970.  
  3971.    Category: Display
  3972.  
  3973.  
  3974.  
  3975.    Computer Tyme MarxMenu Users Manual                     Page 62
  3976.    _______________________________________________________________
  3977.  
  3978.  
  3979.    BinString (Number, Length) : String   BinString (Number, Length) : String   BinString (Number, Length) : String
  3980.    BinString converts a number into a base 2 binary string. If Length > 0
  3981.    then the number will have enough leading zeros to make it Length long.
  3982.    If Length = 0 then leading zeros are removed. Length must be 32 or less.
  3983.  
  3984.     Example:
  3985.        Writeln HexSt(45,8)    ;returns 00101101
  3986.        Writeln HexSt(45,0)    ;returns 101101
  3987.  
  3988.    See Also: HexString
  3989.  
  3990.    Category: String
  3991.  
  3992.    Blanked : Boolean   Blanked : Boolean   Blanked : Boolean
  3993.    Returns true if the screen blanker has kicked it. This lets you alter
  3994.    your idle program based on whether the screen blanker is active.
  3995.  
  3996.    See Also: IdleProgram
  3997.  
  3998.    Category: Display
  3999.  
  4000.    BlankMessage (string)   BlankMessage (string)   BlankMessage (string)
  4001.    When the screen blanks out, this one line message is displayed. If
  4002.    BlankMessage is not set, the date and time will be displayed.
  4003.  
  4004.    See Also: ConsolePos
  4005.  
  4006.    Category: String
  4007.  
  4008.    BlankScreenProgram : Procedure   BlankScreenProgram : Procedure   BlankScreenProgram : Procedure
  4009.    This sets the blank screen program to use and overrides MarxMenu's
  4010.    internal screen blanker. It also overrides the IdleProgram so if you are
  4011.    running something in your idle program that you want to continue to run
  4012.    when the screen goes blank, call your idle procedure from the screen
  4013.    blanker procedure.
  4014.  
  4015.    If you exit your screen blanker and MarxMenu thinks the screen should
  4016.    still be blank it will call it again.
  4017.  
  4018.    When MarxMenu decides to blank the screen it calls BlankScreenProgram.
  4019.    When MarxMenu decides it's ready to unblank the screen it sets UnBlank
  4020.    to true.
  4021.  
  4022.    Thus commands like UseNovPassword, LockWord, and BlankTime will work
  4023.    with your screen blanker.
  4024.  
  4025.    To set up a blank screen program:
  4026.  
  4027.     BlankScreenProgram = Loc (Procedure Name)
  4028.  
  4029.    To switch back to normal screen blanking run:
  4030.  
  4031.  
  4032.  
  4033.    Computer Tyme MarxMenu Users Manual                     Page 63
  4034.    _______________________________________________________________
  4035.  
  4036.  
  4037.     Dispose(ScreenBlankProgram)
  4038.  
  4039.    See Also: IdleProgram, UnBlank
  4040.  
  4041.    Category: Display
  4042.  
  4043.    BlankTime (minutes)   BlankTime (minutes)   BlankTime (minutes)
  4044.    Sets the number of minutes before the screen blanks out to prevent
  4045.    screen burn. Since this is not a resident program, screen blanking is
  4046.    only active while the menu system is active. Setting BlankTime to 0
  4047.    prevents screen blanking.
  4048.  
  4049.     Example:
  4050.       Set ConsolePos
  4051.  
  4052.    Category: Display
  4053.  
  4054.    Blink : Boolean   Blink : Boolean   Blink : Boolean
  4055.    Blink is a boolean variable that when set to true allows you to specify
  4056.    colors that will blink. To make a color that blinks, set the background
  4057.    color to a bright color. A bright color is a color from 8 to 15.
  4058.  
  4059.    Normally, when Blink is off, MarxMenu strips the high bit of the colors.
  4060.    When Blink is on, high bit stripping is disabled.
  4061.  
  4062.     Example:
  4063.        Blink
  4064.        TextColor Green LRed
  4065.  
  4066.    Because the background color is light red, the text will blink.
  4067.  
  4068.    Warning: Blinking characters can cause headaches and eye strain. I
  4069.    resisted adding this feature for a long time because I personally hate
  4070.    excessive blinking characters on the screen. I now recognize that
  4071.    blinking can be very effective when used correctly. Please use blinking
  4072.    sparingly.
  4073.  
  4074.    Category: Color
  4075.  
  4076.    BlockBox   BlockBox   BlockBox
  4077.    Selects block type box for menu borders.
  4078.  
  4079.    See Also: SingleLineBox, DoubleLineBox, CustomBox, NoBoxBorder
  4080.  
  4081.    Category: Display
  4082.  
  4083.  
  4084.  
  4085.    Computer Tyme MarxMenu Users Manual                     Page 64
  4086.    _______________________________________________________________
  4087.  
  4088.  
  4089.    BootDrive : String   BootDrive : String   BootDrive : String
  4090.  
  4091.    Returns the drive letter of the boot drive. Requires DOS 4+ to work. On
  4092.    diskless workstations the BootDrive will be A.
  4093.  
  4094.    Catagory: File
  4095.  
  4096.    BoxBorderColor (forecolor,backcolor)   BoxBorderColor (forecolor,backcolor)   BoxBorderColor (forecolor,backcolor)
  4097.    Sets colors for box border.
  4098.  
  4099.    Category: Color
  4100.  
  4101.    BoxHeader (string)   BoxHeader (string)   BoxHeader (string)
  4102.    Sets the center header message for the next box displayed. This command
  4103.    is used before the DrawBox command.
  4104.  
  4105.     Example:
  4106.        BoxHeader ' Main Choices '
  4107.        DrawBox (25,6,30,9)
  4108.  
  4109.    See Also: BoxHeaderLeft, BoxHeaderRight
  4110.    See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
  4111.  
  4112.    Category: Display
  4113.  
  4114.    BoxHeaderColor (forecolor,backcolor)   BoxHeaderColor (forecolor,backcolor)   BoxHeaderColor (forecolor,backcolor)
  4115.    Sets colors for the box headers and box footers.
  4116.  
  4117.    Category: Color
  4118.  
  4119.    BoxHeaderLeft (string)   BoxHeaderLeft (string)   BoxHeaderLeft (string)
  4120.    Sets the left header message for the next box displayed. This command is
  4121.    used before the DrawBox command.
  4122.  
  4123.     Example:
  4124.        BoxHeaderLeft ' Main Choices '
  4125.        DrawBox (25,6,30,9)
  4126.  
  4127.    See Also: BoxHeader, BoxHeaderRight
  4128.    See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
  4129.  
  4130.    Category: Display
  4131.  
  4132.  
  4133.  
  4134.    Computer Tyme MarxMenu Users Manual                     Page 65
  4135.    _______________________________________________________________
  4136.  
  4137.  
  4138.    BoxHeaderRight (string)   BoxHeaderRight (string)   BoxHeaderRight (string)
  4139.    Sets the right header message for the next box displayed. This command
  4140.    is used before the DrawBox command.
  4141.  
  4142.     Example:
  4143.        BoxHeaderRight ' Main Choices '
  4144.        DrawBox (25,6,30,9)
  4145.  
  4146.    See Also: BoxHeader, BoxHeaderLeft
  4147.    See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
  4148.  
  4149.    Category: Display
  4150.  
  4151.    BoxFooter (string)   BoxFooter (string)   BoxFooter (string)
  4152.    Sets the center footer message for the next box displayed. This command
  4153.    is used before the DrawBox command.
  4154.  
  4155.     Example:
  4156.        BoxFooter ' Main Choices '
  4157.        DrawBox (25,6,30,9)
  4158.  
  4159.    See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
  4160.    See Also: BoxFooterLeft, BoxFooterRight
  4161.  
  4162.    Category: Display
  4163.  
  4164.    BoxFooterLeft (string)   BoxFooterLeft (string)   BoxFooterLeft (string)
  4165.    Sets the left footer message for the next box displayed. This command is
  4166.    used before the DrawBox command.
  4167.  
  4168.     Example:
  4169.        BoxFooterLeft ' Main Choices '
  4170.        DrawBox (25,6,30,9)
  4171.  
  4172.    See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
  4173.    See Also: BoxFooter, BoxFooterRight
  4174.  
  4175.    Category: Display
  4176.  
  4177.    BoxFooterRight (string)   BoxFooterRight (string)   BoxFooterRight (string)
  4178.    Sets the right footer message for the next box displayed. This command
  4179.    is used before the DrawBox command.
  4180.  
  4181.     Example:
  4182.        BoxFooterRight ' Main Choices '
  4183.        DrawBox (25,6,30,9)
  4184.  
  4185.    See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
  4186.    See Also: BoxFooter, BoxFooterLeft
  4187.  
  4188.    Category: Display
  4189.  
  4190.  
  4191.  
  4192.    Computer Tyme MarxMenu Users Manual                     Page 66
  4193.    _______________________________________________________________
  4194.  
  4195.  
  4196.    BoxInsideColor (forecolor,backcolor)   BoxInsideColor (forecolor,backcolor)   BoxInsideColor (forecolor,backcolor)
  4197.    Sets colors for box interior.
  4198.  
  4199.    Category: Color
  4200.  
  4201.    BrightBackground (On/Off)   BrightBackground (On/Off)   BrightBackground (On/Off)
  4202.    This command switches between bright background modes and blink modes.
  4203.  
  4204.    I made a most amazing discovery. I found out that there was a way to
  4205.    convert the blink bit to do high intensity background instead. This
  4206.    doubles the number of colors that MarxMenu can produce.
  4207.  
  4208.    This command affects the video controller directly. Thus, it may not
  4209.    work on all computers especially if you are running something weird.
  4210.  
  4211.    Once this is set in MarxMenu it stays set. So if you run another program
  4212.    that has blink in it, it will use 16 background colors instead. The
  4213.    solution is to set BrightBackground Off right before you run a program
  4214.    that requires blinking.
  4215.  
  4216.     Example:
  4217.       OnKey 'X'
  4218.         |BrightBackground Off
  4219.         PROCOMM
  4220.  
  4221.    Warning! This program uses a trick that may not be compatible with some
  4222.    TSR programs. If you can get away with it, fine. But, if you have
  4223.    problems where TSR's cause your screen to blink, then don't use this
  4224.    command.
  4225.  
  4226.    Category: Display
  4227.  
  4228.    BuildPath (Array)   BuildPath (Array)   BuildPath (Array)
  4229.    BuildPath sets the PATH environment variable to the driectories listed
  4230.    in the Array variable. The first element in the array becomes the first
  4231.    search path.
  4232.  
  4233.    See Also: SplitPath, FixPath
  4234.  
  4235.    Category: String, Array, Environment
  4236.  
  4237.  
  4238.  
  4239.    Computer Tyme MarxMenu Users Manual                     Page 67
  4240.    _______________________________________________________________
  4241.  
  4242.  
  4243.    CancelListEntry (Local Name)   CancelListEntry (Local Name)   CancelListEntry (Local Name)
  4244.    This will take an entry out of the network redirection list for either a
  4245.    print redirection or disk drive redirection.
  4246.  
  4247.     Example:
  4248.       CancelListEntry 'P:'    ;cancels network drive mapping
  4249.       CancelListEntry 'LPT1'  ;cancels printer redirection
  4250.  
  4251.    See Also: AssignList, MakeListEntry
  4252.  
  4253.    Category: Novell, MSNet, Vines
  4254.  
  4255.    CapsColor (forecolor,backcolor)   CapsColor (forecolor,backcolor)   CapsColor (forecolor,backcolor)
  4256.    Setting CapsColor allows capital letters and numbers to be a different
  4257.    color than the rest of the text. This is used with the UseArrows command
  4258.    to show which character is the one that selects the options in the
  4259.    window. CapsColor is reset after any TextColor command, so be sure to
  4260.    use CapsColor AFTER TextColor commands.
  4261.  
  4262.    For this option the numbers 0 - 9 and some punctuation characters are
  4263.    considered capitals.
  4264.  
  4265.    See Also: DrawBox
  4266.  
  4267.    Category: Color
  4268.  
  4269.    CapsLock : Boolean   CapsLock : Boolean   CapsLock : Boolean
  4270.    Returns true if Caps Lock is on. This command can also set the Caps Lock
  4271.    on and off.
  4272.  
  4273.     Example:
  4274.       if CapsLock then Write 'CapsLock is On'
  4275.  
  4276.       CapsLock On  ;Turns CapsLock On
  4277.       CapsLock Off ;Turns CapsLock Off
  4278.  
  4279.       CapsLock (by itself) turns CapsLock On.
  4280.  
  4281.    See Also: ScrollLock, NumLock
  4282.  
  4283.    Category: System
  4284.  
  4285.  
  4286.  
  4287.    Computer Tyme MarxMenu Users Manual                     Page 68
  4288.    _______________________________________________________________
  4289.  
  4290.  
  4291.    Chain (MenuName)   Chain (MenuName)   Chain (MenuName)
  4292.    This command will load a new menu. Unlike Jump, MarxMenu stays in
  4293.    memory. The screen is not cleared. If the new menu has exactly the same
  4294.    global variables, the contents of all global variables is retained.
  4295.    Chain allows for a very quick transfer from one menu to another.
  4296.  
  4297.     Example:
  4298.       OnKey 'P'
  4299.         |Chain ('USER')  ;Chains to USER.MNU
  4300.  
  4301.    Category: Execution
  4302.  
  4303.    Char (number) : String   Char (number) : String   Char (number) : String
  4304.    Converts a number into a one character string.
  4305.  
  4306.     Example:
  4307.       Write (Char(65)) ;This will display 'A'
  4308.  
  4309.    Category: String
  4310.  
  4311.    ChDir (string)   ChDir (string)   ChDir (string)
  4312.    Changes directories. The variable FileResult can be tested to see if it
  4313.    was successful. ChDir can also be used to change drives.
  4314.  
  4315.     Example:
  4316.       ChDir( 'C:\HOME\MARXMENU' )
  4317.       ChDir( 'B:' )                ; Will make drive B: the current drive
  4318.  
  4319.    Category: File
  4320.  
  4321.    CleanFileName (string) : String   CleanFileName (string) : String   CleanFileName (string) : String
  4322.    Returns the full path name or directory name of a string. It also
  4323.    removes occurrences of a '\\' in the string if they aren't at the
  4324.    beginning of the string.
  4325.  
  4326.     Thus the command:
  4327.        CleanFileName('a:\' + '\main.mnu') returns 'A:\MAIN.MNU'.
  4328.  
  4329.    CleanFileName also removes extra ending '\' and capitalizes the path.
  4330.  
  4331.    See Also: TrueName
  4332.  
  4333.    Category: String
  4334.  
  4335.  
  4336.  
  4337.    Computer Tyme MarxMenu Users Manual                     Page 69
  4338.    _______________________________________________________________
  4339.  
  4340.  
  4341.    ClearLine [char]   ClearLine [char]   ClearLine [char]
  4342.    Clears the current line in the current window. The optional parameter is
  4343.    for the decimal number of the IBM graphics character. If [char] is
  4344.    present, the line will be filled with the character.
  4345.  
  4346.     Examples:
  4347.        ClearLine       ;Clears screen with blanks
  4348.        ClearLine 205   ;Clears screen with char 205
  4349.  
  4350.    Category: Display, Ansi
  4351.  
  4352.    ClearScreen [char]   ClearScreen [char]   ClearScreen [char]
  4353.    Clears the screen. The optional parameter is the decimal number
  4354.    equivalent for an IBM graphics character. If [char] is present, the
  4355.    screen will be filled with [char].
  4356.  
  4357.     Examples:
  4358.        ClearScreen       ;Clears screen with blanks
  4359.        ClearScreen 177   ;Clears screen with char 177
  4360.  
  4361.    Category: Display, Ansi
  4362.  
  4363.    ClearScreenFirst (on/off)   ClearScreenFirst (on/off)   ClearScreenFirst (on/off)
  4364.    Used in conjunction with Execute. If on, will clear the screen before
  4365.    running the program.
  4366.  
  4367.     Example:
  4368.       OnKey 'D'
  4369.         |ClearScreenFirst On
  4370.         |Execute 'C:\DM.COM'
  4371.  
  4372.    The default is ON.
  4373.  
  4374.    See Also: Execute
  4375.  
  4376.    Category: Execution
  4377.  
  4378.    ClearScreenOnExit (on/off)   ClearScreenOnExit (on/off)   ClearScreenOnExit (on/off)
  4379.    Controls whether or not the screen is cleared on menu exit. Default on.
  4380.  
  4381.    See Also: Execute
  4382.  
  4383.    Category: Display
  4384.  
  4385.    ClockColor (forecolor,backcolor)   ClockColor (forecolor,backcolor)   ClockColor (forecolor,backcolor)
  4386.    Sets colors for the on screen clock.
  4387.  
  4388.    Category: Color
  4389.  
  4390.  
  4391.  
  4392.    Computer Tyme MarxMenu Users Manual                     Page 70
  4393.    _______________________________________________________________
  4394.  
  4395.  
  4396.    ClockMode   ClockMode   ClockMode
  4397.    ClockMode is a variable whose bits control the format of the on screen
  4398.    clock when it is used.
  4399.  
  4400.     ClockMode Bits:
  4401.     ---------------
  4402.     0 24 hour mode
  4403.     1 AmPm On
  4404.     2 Show Seconds
  4405.     3 UpperCase
  4406.     4 3 char month
  4407.     5 3 char Day of Week
  4408.     6 Show Day of Week
  4409.     7 Dash = 0 Slash = 1 MM-DD-YY or MM/DD/YY
  4410.     8 Long Date
  4411.  
  4412.     Bit 0 on sets hours display to 24 hour mode.
  4413.     Bit 1 turns on the Am/Pm display.
  4414.     Bit 2 on controls if time is shown as HH:MM:SS or just HH:MM.
  4415.     Bit 3 shows date in only upper case.
  4416.     Bit 4 on shows month in 3 characters.
  4417.     Bit 5 shows Day of week as 3 characters.
  4418.     Bit 6 controls if Day of week is displayed.
  4419.     Bit 7 controls if date is shown as MM-DD-YY or MM/DD/YY.
  4420.     Bit 8 shows date in text. (October 3, 1990).
  4421.  
  4422.    The default ClockMode is 326.
  4423.  
  4424.    Category: Display
  4425.  
  4426.    ClockPos (column,row)   ClockPos (column,row)   ClockPos (column,row)
  4427.    Puts a clock on the screen at location (column,row). The command
  4428.    ClockPos 0 0 turns the clock off.
  4429.  
  4430.    Category: Display
  4431.  
  4432.  
  4433.  
  4434.    Computer Tyme MarxMenu Users Manual                     Page 71
  4435.    _______________________________________________________________
  4436.  
  4437.  
  4438.    ClosePrinter   ClosePrinter   ClosePrinter
  4439.    In MarxMenu the printer is just another text file. Closing the printer
  4440.    is not required for ordinary printing. If you are changing printers you
  4441.    need to run ClosePrinter before changing the printer name. The printer
  4442.    is automatically opened by MarxMenu any time you print anything.
  4443.  
  4444.    If you are running Windows or DesqView, closing the printer allows other
  4445.    programs to access the printer. So if you are running under any
  4446.    multitasking shell, be sure to close the printer when you are done with
  4447.    it.
  4448.  
  4449.    If you are using a network like Novell, ClosePrinter will end the print
  4450.    job and send it to the print queue. This avoids the need to wait for
  4451.    print capture timouts to take effect.
  4452.  
  4453.    Closing the printer is good programming practice and will help you stay
  4454.    out of trouble. It's like what your mother taught you. "When you're done
  4455.    with something, put it away."
  4456.  
  4457.    See Also: OpenPrinter, PrinterName
  4458.  
  4459.    Category: Printer
  4460.  
  4461.    ClusterSize <drive> : Number   ClusterSize <drive> : Number   ClusterSize <drive> : Number
  4462.    Returns cluster size in bytes.
  4463.  
  4464.     Example:
  4465.        Writeln (ClusterSize 'C')
  4466.  
  4467.    ClusterSize only looks at the first character of the string for the
  4468.    drive letter.
  4469.  
  4470.     Example:
  4471.        ClusterSize (Path)  ;returns clustersize of current drive.
  4472.  
  4473.    Category: System
  4474.  
  4475.    CmdLine : String   CmdLine : String   CmdLine : String
  4476.    System string variable that returns the rest of the command line after
  4477.    the menu name.
  4478.  
  4479.    Category: String
  4480.  
  4481.    ColdBoot   ColdBoot   ColdBoot
  4482.    Causes a cold reboot of the computer.
  4483.  
  4484.    See Also: Reboot
  4485.  
  4486.    Category: Execution
  4487.  
  4488.  
  4489.  
  4490.    Computer Tyme MarxMenu Users Manual                     Page 72
  4491.    _______________________________________________________________
  4492.  
  4493.  
  4494.    ColorScreen : Boolean   ColorScreen : Boolean   ColorScreen : Boolean
  4495.    Returns true if screen is a color screen. Note: Running MODE BW80 will
  4496.    cause ColorScreen to return false.
  4497.  
  4498.     Example:
  4499.       If ColorScreen
  4500.           ;Color
  4501.         TextColor( White, Blue )
  4502.       Else
  4503.           ;Monochrome
  4504.         TextColor( White, Black )
  4505.       EndIf
  4506.  
  4507.    Category: Display
  4508.  
  4509.    Comment   Comment   Comment
  4510.    Starts a Comment Block. All text is ignored until EndComment is
  4511.    encountered.
  4512.  
  4513.     Example:
  4514.       Comment
  4515.       =======================================
  4516.  
  4517.       Everything between Comment and EndComment is ignored.
  4518.  
  4519.       =======================================
  4520.       EndComment
  4521.  
  4522.    See Also: EndComment
  4523.  
  4524.    Category: Misc
  4525.  
  4526.    Console (On/Off)   Console (On/Off)   Console (On/Off)
  4527.    The command Console Off will disable access to the console.
  4528.  
  4529.    Category: Display
  4530.  
  4531.    ConsoleBorderColor (Color,Color)   ConsoleBorderColor (Color,Color)   ConsoleBorderColor (Color,Color)
  4532.    Sets the color of the console border.
  4533.  
  4534.     Example:
  4535.       See Also: ConsolePos
  4536.  
  4537.    Category: Color
  4538.  
  4539.  
  4540.  
  4541.    Computer Tyme MarxMenu Users Manual                     Page 73
  4542.    _______________________________________________________________
  4543.  
  4544.  
  4545.    ConsoleHeaderColor (Color,Color)   ConsoleHeaderColor (Color,Color)   ConsoleHeaderColor (Color,Color)
  4546.    Sets the color of the console header.
  4547.  
  4548.    See Also: ConsolePos
  4549.  
  4550.    Category: Color
  4551.  
  4552.    ConsoleInsideColor (Color,Color)   ConsoleInsideColor (Color,Color)   ConsoleInsideColor (Color,Color)
  4553.    Sets the color of the console inside.
  4554.  
  4555.    See Also: ConsolePos
  4556.  
  4557.    Category: Color
  4558.  
  4559.    ConsolePos (column,row)   ConsolePos (column,row)   ConsolePos (column,row)
  4560.    Sets the coordinates of the pop-up console menu.
  4561.  
  4562.     Example:
  4563.       ConsoleBorderColor( White,Blue )
  4564.       ConsoleHeaderColor( Yellow,Blue )
  4565.       ConsoleInsideColor( Yellow,Blue )
  4566.       ConsolePos( 5,5 ) ; Column 5, Row 5
  4567.  
  4568.    Category: Display
  4569.  
  4570.    Const   Const   Const
  4571.    Creates a constant.
  4572.  
  4573.    See Also: Var, Shared, Qualifier
  4574.  
  4575.    Category Variable
  4576.  
  4577.    Cos (Radians) : Real   Cos (Radians) : Real   Cos (Radians) : Real
  4578.    Returns the CoSine of a real.
  4579.  
  4580.    Category: Math, Float
  4581.  
  4582.    CpuClass : Number   CpuClass : Number   CpuClass : Number
  4583.    Reads the type of CPU you are using and returns a number.
  4584.  
  4585.     1 - 8088, 8086, 80186, V20, V30
  4586.     2 - 80286
  4587.     3 - 80386
  4588.     4 - 80486
  4589.  
  4590.    Category: System
  4591.  
  4592.  
  4593.  
  4594.    Computer Tyme MarxMenu Users Manual                     Page 74
  4595.    _______________________________________________________________
  4596.  
  4597.  
  4598.    CountryCode : Number   CountryCode : Number   CountryCode : Number
  4599.    Returns the international country code from DOS. The country code is the
  4600.    same number as the international telephone dialing code prefix.
  4601.  
  4602.    Category: International
  4603.  
  4604.    CurrentEnvironment   CurrentEnvironment   CurrentEnvironment
  4605.    CurrentEnvironment selects the current environment for use with
  4606.    environment access commands.
  4607.  
  4608.    See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
  4609.    See Also: ParentEnvironment MasterEnvironment
  4610.  
  4611.    Category: Environment
  4612.  
  4613.    CurrentWindow : Number   CurrentWindow : Number   CurrentWindow : Number
  4614.    Returns the number of the current window. All windows are given a unique
  4615.    number.
  4616.  
  4617.    See Also: SetTopWindow
  4618.  
  4619.    Category: Display
  4620.  
  4621.    Cursor (On/Off)   Cursor (On/Off)   Cursor (On/Off)
  4622.    MarxMenu automatically turns the cursor on for certain kinds of input.
  4623.    Using Cursor Off prevents MarxMenu from turning the cursor on. Cursor On
  4624.    reverses this and allows MarxMenu to turn the cursor on when needed.
  4625.  
  4626.    Category: Display
  4627.  
  4628.    CustomBox (String)   CustomBox (String)   CustomBox (String)
  4629.    Selects a Box border using an 8 character string to define the sides and
  4630.    the corners.
  4631.  
  4632.     Example:
  4633.       CustomBox ('12345678') ;This will help you figure out what
  4634.                              ;position matches which side.
  4635.  
  4636.    See Also: SingleLineBox, DoubleLineBox, BlockBox, NoBoxBorder
  4637.  
  4638.    Category: Display
  4639.  
  4640.    DateSeparator : String   DateSeparator : String   DateSeparator : String
  4641.    Returns the date separator character from the country information.
  4642.  
  4643.    See Also: TimeSeparator, DecimalSeparator, CountryCode
  4644.  
  4645.    Category: International, Time
  4646.  
  4647.  
  4648.  
  4649.    Computer Tyme MarxMenu Users Manual                     Page 75
  4650.    _______________________________________________________________
  4651.  
  4652.  
  4653.    DateString (Time) : String   DateString (Time) : String   DateString (Time) : String
  4654.    Returns the date of a time value as text. If no parameter is passed then
  4655.    Now is assumed. Uses international date format rules.
  4656.  
  4657.     Example:
  4658.       Writeln DateString            ;returns the date of Now as text
  4659.       Writeln DateString (Tomorrow) ;returns the date of Tomorrow as text
  4660.  
  4661.    Category: Time, String, International
  4662.  
  4663.    Day : Number   Day : Number   Day : Number
  4664.    Returns the day of the month.
  4665.  
  4666.    Category: Time
  4667.  
  4668.    DayOf (Date) : Number   DayOf (Date) : Number   DayOf (Date) : Number
  4669.    Returns the day of a date. If Date is passed as a string it is
  4670.    converted automatically.
  4671.  
  4672.    See Also: TimeOf, BadDate
  4673.  
  4674.    Category: Time
  4675.  
  4676.    DayOfWeek : Number   DayOfWeek : Number   DayOfWeek : Number
  4677.    Returns the day of the week.
  4678.  
  4679.      0=SUNDAY
  4680.      1=MONDAY
  4681.      2=TUESDAY
  4682.      3=WEDNESDAY
  4683.      4=THURSDAY
  4684.      5=FRIDAY
  4685.      6=SATURDAY
  4686.  
  4687.    Category: Time
  4688.  
  4689.    DayOfWeekOf (Date) : Number   DayOfWeekOf (Date) : Number   DayOfWeekOf (Date) : Number
  4690.    Returns the DayOfWeek of a date. If Date is passed as a string it is
  4691.    converted automatically.
  4692.  
  4693.    See Also: TimeOf, BadDate
  4694.  
  4695.    Category: Time
  4696.  
  4697.    DecimalSeparator : String   DecimalSeparator : String   DecimalSeparator : String
  4698.    Returns the decimal separator character from the country information.
  4699.  
  4700.    See Also: TimeSeparator, DateSeparator, CountryCode
  4701.  
  4702.    Category: International
  4703.  
  4704.  
  4705.  
  4706.    Computer Tyme MarxMenu Users Manual                     Page 76
  4707.    _______________________________________________________________
  4708.  
  4709.  
  4710.    Delete (string,pos,count)   Delete (string,pos,count)   Delete (string,pos,count)
  4711.    Deletes characters from string starting at pos for count.
  4712.  
  4713.     Example:
  4714.       String = 'ABCDEFGH'
  4715.       Delete(String,2,3)
  4716.  
  4717.    This leaves a String containing 'ABFGH'
  4718.  
  4719.    If count exceeds the length of the string, the string is truncated at
  4720.    pos.
  4721.  
  4722.    Another use of Delete is to delete elements of an array.
  4723.  
  4724.    Delete (Array,Position,Count)
  4725.    This works exactly like the delete command for strings. It delete
  4726.    elements of an array beginning at Position for Count elements. The
  4727.    NumberOfElements is adjusted accordingly.
  4728.  
  4729.     Example:
  4730.       MyArray[1] = "ONE"
  4731.       MyArray[2] = "TWO"
  4732.       MyArray[3] = "THREE"
  4733.       MyArray[4] = "FOUR"
  4734.       Delete( MyArray,2,2 )
  4735.  
  4736.     ;MyArray now contains..
  4737.       MyArray[1] = "ONE"
  4738.       MyArray[2] = "FOUR"
  4739.  
  4740.    Category: String, Array
  4741.  
  4742.    DelFile (Name)   DelFile (Name)   DelFile (Name)
  4743.    Deletes a file by name. FileResult returns a 0 if the file existed and
  4744.    the delete was successful.
  4745.  
  4746.     Example:
  4747.       DelFile( 'C:\NOTES\READ.ME' )
  4748.       If FileResult = 0
  4749.         Writeln('C:\NOTES\READ.ME was succesfully deleted!')
  4750.       Else
  4751.         Writeln('C:\NOTES\READ.ME was un-succesfully deleted!')
  4752.       EndIf
  4753.  
  4754.    Category: File
  4755.  
  4756.  
  4757.  
  4758.    Computer Tyme MarxMenu Users Manual                     Page 77
  4759.    _______________________________________________________________
  4760.  
  4761.  
  4762.    DisplayType : Number   DisplayType : Number   DisplayType : Number
  4763.    Returns the current video card type.
  4764.  
  4765.     0 = HercMono
  4766.     1 = CGA
  4767.     2 = MCGA
  4768.     3 = EGA
  4769.     4 = VGA
  4770.     5 = PGC
  4771.  
  4772.    MarxMenu also understands the above constant names. For example, if you
  4773.    want to test for a CGA card:
  4774.  
  4775.     if DisplayType = CGA then ....
  4776.  
  4777.    Category: Display
  4778.  
  4779.    DirectoriesOnly (On/Off)   DirectoriesOnly (On/Off)   DirectoriesOnly (On/Off)
  4780.    Forces ReadDirectory to read directories instead of file names.
  4781.  
  4782.    See Also: ReadDirectory
  4783.  
  4784.    Category: File
  4785.  
  4786.    Dispose (Variable)   Dispose (Variable)   Dispose (Variable)
  4787.    This command reclaims memory used by a string variable, file variable,
  4788.    or an array. If you are doing a lot of data manipulation, you might want
  4789.    to reclaim memory space used by arrays you are done with. The disposed
  4790.    variable becomes an untyped variable.
  4791.  
  4792.     Example:
  4793.       Loop( 20 )
  4794.         MyArray[LoopIndex] = LoopIndex
  4795.  
  4796.         ;Check to See Also: if number is odd or even
  4797.         If (MyArray[LoopIndex] Mod 2) = 0
  4798.           Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
  4799.         Else
  4800.           Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
  4801.         EndIf
  4802.       EndLoop
  4803.  
  4804.       ;We're finished with the array so reclaim its memory space.
  4805.       Dispose(MyArray)
  4806.  
  4807.    Category: Memory, Array
  4808.  
  4809.  
  4810.  
  4811.    Computer Tyme MarxMenu Users Manual                     Page 78
  4812.    _______________________________________________________________
  4813.  
  4814.  
  4815.    DosVersion : Number   DosVersion : Number   DosVersion : Number
  4816.    Returns the major DOS version number.
  4817.  
  4818.    See Also: DosVersionString, MinorDosVersion
  4819.  
  4820.    Category: System
  4821.  
  4822.    DosVersionString : String   DosVersionString : String   DosVersionString : String
  4823.    Returns the DOS version number as a 4 character string. This function
  4824.    always returns 2 places past the decimal point. The form of the string
  4825.    is: #.##
  4826.  
  4827.     Example
  4828.        Writeln DosVersionString   ;prints 4.01
  4829.  
  4830.    See Also: DosVersion, MinorDosVersion
  4831.  
  4832.    Category: System, String
  4833.  
  4834.    DosWindow (on/off)   DosWindow (on/off)   DosWindow (on/off)
  4835.    When you set DosWindow on, MarxMenu will not drop out of the menu system
  4836.    when you use the Execute command. It will give you a display of the DOS
  4837.    screen within the current window. The program you execute must be a
  4838.    well-behaved program like DIR or COPY or some of the other DOS commands
  4839.    that talk to the screen through standard file handles.
  4840.  
  4841.    Category: Execution
  4842.  
  4843.    DoubleLineBox   DoubleLineBox   DoubleLineBox
  4844.    Selects double line box.
  4845.  
  4846.    See Also: SingleLineBox, BlockBox, CustomBox, NoBoxBorder
  4847.  
  4848.    Category: Display
  4849.  
  4850.  
  4851.  
  4852.    Computer Tyme MarxMenu Users Manual                     Page 79
  4853.    _______________________________________________________________
  4854.  
  4855.  
  4856.    DrawBox (column,row,width,height)   DrawBox (column,row,width,height)   DrawBox (column,row,width,height)
  4857.    Draws a box on the screen. The (column) and (row) are the upper left
  4858.    corner, (width) and (height) is the box size.
  4859.  
  4860.     Example:
  4861.       Explode On
  4862.       Shadow On
  4863.       DoubleLineBox
  4864.       BoxHeaderColor( Yellow,Red )
  4865.       BoxBorderColor( White, Red )
  4866.       BoxInsideColor( Yellow,Red )
  4867.       InverseColor( Black, Gray )
  4868.       CapsColor( Black, Red )
  4869.       BoxHeader = ' << Main Menu >> '
  4870.       DrawBox( 30,10,40,8 )
  4871.  
  4872.    DrawBox also creates a logical layer for several display variables.
  4873.    These variable include TextColor, InverseColor, CapsColor. It is
  4874.    important to use these color control commands AFTER the DrawBox command
  4875.    in order to properly restore the colors of the previous DrawBox.
  4876.  
  4877.    If you call up a box and when it finishes it messes up the colors of the
  4878.    previous box, you probably used color control commands BEFORE the
  4879.    DrawBox instead of AFTER.
  4880.  
  4881.    Category: Display
  4882.  
  4883.    Drives : Number   Drives : Number   Drives : Number
  4884.    Returns the number of drives. This includes drive names that can be
  4885.    substituted. Most of the time the answer is 5. This relates to your
  4886.    LastDrive = command in your CONFIG.SYS file.
  4887.  
  4888.    Category: System
  4889.  
  4890.    DvAppNumber : Number   DvAppNumber : Number   DvAppNumber : Number
  4891.    Returns the DesqView application number or window number.
  4892.  
  4893.    Category: DesqView
  4894.  
  4895.    DvFrame (Handle,On/Off)   DvFrame (Handle,On/Off)   DvFrame (Handle,On/Off)
  4896.    Turns the DesqView border frame on or off.
  4897.  
  4898.    Category: DesqView
  4899.  
  4900.    DvFreeze (Handle)   DvFreeze (Handle)   DvFreeze (Handle)
  4901.    Freezes a program. The program stops executing.
  4902.  
  4903.    See Also: DvUnFreeze, DvPifExecute, DvLastHandle
  4904.  
  4905.    Category: DesqView
  4906.  
  4907.  
  4908.  
  4909.    Computer Tyme MarxMenu Users Manual                     Page 80
  4910.    _______________________________________________________________
  4911.  
  4912.  
  4913.    DvHide (Handle)   DvHide (Handle)   DvHide (Handle)
  4914.    Hides all output from program making it invisible. The program still
  4915.    continues to run.
  4916.  
  4917.    See Also: DvUnHide
  4918.  
  4919.    Category: DesqView
  4920.  
  4921.    DvKillTask (Handle)   DvKillTask (Handle)   DvKillTask (Handle)
  4922.    Kills a program running under DesqView. The handle is the one returned
  4923.    be DvPifExecute in DvLastHandle.
  4924.  
  4925.    See Also: DvPifExecute
  4926.  
  4927.    Category: DesqView
  4928.  
  4929.    DvLastHandle : Number   DvLastHandle : Number   DvLastHandle : Number
  4930.    Returns a number that is associated with a program running under
  4931.    DesqView. This number is used to control other programs running under
  4932.    DesqView. It is set by DvPifExecute.
  4933.  
  4934.    See Also: DvPifExecute
  4935.  
  4936.    Category: DesqView
  4937.  
  4938.    DvLoaded : Boolean   DvLoaded : Boolean   DvLoaded : Boolean
  4939.    Returns true if DesqView is loaded.
  4940.  
  4941.    Category: DesqView
  4942.  
  4943.    DvMoveWindow (Handle,X,Y)   DvMoveWindow (Handle,X,Y)   DvMoveWindow (Handle,X,Y)
  4944.    Moves DesqView window upper left corner to position X,Y.
  4945.  
  4946.    Category: DesqView
  4947.  
  4948.    DvMyHandle : Number   DvMyHandle : Number   DvMyHandle : Number
  4949.    Returns the DesqView handle of the current process.
  4950.  
  4951.    See Also: DvLastHandle
  4952.  
  4953.    Category: DesqView
  4954.  
  4955.  
  4956.  
  4957.    Computer Tyme MarxMenu Users Manual                     Page 81
  4958.    _______________________________________________________________
  4959.  
  4960.  
  4961.    DvPifExecute (Pif File)   DvPifExecute (Pif File)   DvPifExecute (Pif File)
  4962.    Executes another program under DesqView in another window. MarxMenu
  4963.    stays resident in its original window. The window executes according to
  4964.    the contents of the DesqView PIF file. The PIF file can be specified by
  4965.    using the full name. If you leave off the extension, MarxMenu assumes
  4966.    the extension DVP. If you pass a two character name, like the two
  4967.    characters in the DesqView menus, then MarxMenu will add -PIF.DVP to the
  4968.    name. If the PIF file is on the path, MarxMenu will find it.
  4969.  
  4970.    Warning! DesqView must be loaded to run this command.
  4971.  
  4972.     Example:
  4973.       DvPifExecute 'BD'
  4974.       DvPifExecute 'BD-PIF'       ;These all execute Big DOS
  4975.       DVPifExecute 'BD-PIF.DVP'
  4976.  
  4977.    The task handle is loaded into a variable named DvLastHandle. When the
  4978.    program starts, it becomes the current top program.
  4979.  
  4980.    See Also: DvLoaded, DvLastHandle
  4981.  
  4982.    Category: DesqView
  4983.  
  4984.    DvResizeWindow (Handle,Width,Height)   DvResizeWindow (Handle,Width,Height)   DvResizeWindow (Handle,Width,Height)
  4985.    Changes the size of a DesqView window.
  4986.  
  4987.    Category: DesqView
  4988.  
  4989.    DvSetBottom (Handle)   DvSetBottom (Handle)   DvSetBottom (Handle)
  4990.    Sets the program associated with the handle to the bottom of the task
  4991.    stack.
  4992.  
  4993.    See Also: DvSetTop
  4994.  
  4995.    Category: DesqView
  4996.  
  4997.    DvSetTop (Handle)   DvSetTop (Handle)   DvSetTop (Handle)
  4998.    Sets the program associated with the handle to be the top running task.
  4999.    Using DvMyHandle allows MarxMenu to regain control after starting
  5000.    another task.
  5001.  
  5002.     Example:
  5003.        DvSetTop (DvMyHandle)
  5004.  
  5005.    See Also: DvSetBottom, DvLastHandle
  5006.  
  5007.    Category: DesqView
  5008.  
  5009.  
  5010.  
  5011.    Computer Tyme MarxMenu Users Manual                     Page 82
  5012.    _______________________________________________________________
  5013.  
  5014.  
  5015.    DvUnFreeze (Handle)   DvUnFreeze (Handle)   DvUnFreeze (Handle)
  5016.    UnFreezes a program. The program starts executing again.
  5017.  
  5018.    See Also: DvFreeze, DvPifExecute, DvLastHandle
  5019.  
  5020.    Category: DesqView
  5021.  
  5022.    DvUnHide (Handle)   DvUnHide (Handle)   DvUnHide (Handle)
  5023.    Reverses the effect of DvHide making program output visible again.
  5024.  
  5025.    See Also: DvHide
  5026.  
  5027.    Category: DesqView
  5028.  
  5029.    Else   Else   Else
  5030.    Starts lines executed if a condition is not true.
  5031.  
  5032.     Example:
  5033.       if X = 1
  5034.          Writeln 'One'
  5035.       else
  5036.          Writeln 'Not One'
  5037.       endif
  5038.  
  5039.    See Also: If Then Endif ElseIf
  5040.  
  5041.    Category: Conditional
  5042.  
  5043.    ElseIf   ElseIf   ElseIf
  5044.    Used with IF, ELSE, and ENDIF in conditional statements. After one
  5045.    ElseIf is true, execution continues after the endif statement.
  5046.  
  5047.     Example:
  5048.       if X = 1
  5049.          Writeln 'One'
  5050.  
  5051.       elseif X = 2
  5052.          Writeln 'Two'
  5053.  
  5054.       elseif X = 3
  5055.          Writeln 'Three'
  5056.  
  5057.       elseif X = 4
  5058.          Writeln 'Four'
  5059.  
  5060.       else
  5061.          Writeln 'Other'
  5062.  
  5063.       endif
  5064.  
  5065.    See Also: If Then Endif Else
  5066.  
  5067.  
  5068.  
  5069.    Computer Tyme MarxMenu Users Manual                     Page 83
  5070.    _______________________________________________________________
  5071.  
  5072.  
  5073.    Category: Conditional
  5074.  
  5075.    EndComment   EndComment   EndComment
  5076.    Ends a comment block.
  5077.  
  5078.    See Also: Comment
  5079.  
  5080.    Category: Misc
  5081.  
  5082.    EndIf   EndIf   EndIf
  5083.    Ends an if statement.
  5084.  
  5085.    See Also: If Else ElseIf Then
  5086.  
  5087.    Category: Conditional
  5088.  
  5089.    EndLoop   EndLoop   EndLoop
  5090.    Ends a loop statement.
  5091.  
  5092.    See Also: Loop LoopIndex LoopLimit
  5093.  
  5094.    Category: Conditional
  5095.  
  5096.    EndOfFile (FileVar) : Boolean   EndOfFile (FileVar) : Boolean   EndOfFile (FileVar) : Boolean
  5097.    Returns True if you are at the end of the file.
  5098.  
  5099.     Example:
  5100.       Var In
  5101.  
  5102.       FileAssign (In,'C:\NOTES\READ.ME')
  5103.       FileOpen (In)
  5104.       While not EndOfFile (In)
  5105.          Writeln (FileReadLn (In))
  5106.       EndWhile
  5107.       FileClose (In)
  5108.  
  5109.    Category: File
  5110.  
  5111.    EndProc   EndProc   EndProc
  5112.    Ends a Procedure.
  5113.  
  5114.    See Also: Procedure, Return
  5115.  
  5116.    Category: Misc
  5117.  
  5118.  
  5119.  
  5120.    Computer Tyme MarxMenu Users Manual                     Page 84
  5121.    _______________________________________________________________
  5122.  
  5123.  
  5124.    EndWhile   EndWhile   EndWhile
  5125.    Ends a While statement.
  5126.  
  5127.    See Also: While
  5128.  
  5129.    Category: Conditional
  5130.  
  5131.    EnvFree : Number   EnvFree : Number   EnvFree : Number
  5132.    Returns the free space in the selected environment.
  5133.  
  5134.    Category: Environment
  5135.  
  5136.    EnvSize : Number   EnvSize : Number   EnvSize : Number
  5137.    Returns the size of the selected environment.
  5138.  
  5139.     Example:
  5140.       if EnvSize < 20
  5141.          Writeln ('Your envrionment size is less than 20 bytes!!')
  5142.       endif
  5143.  
  5144.    Category: Environment
  5145.  
  5146.    EraseTopWindow   EraseTopWindow   EraseTopWindow
  5147.    Erases the last window created with DrawBox.
  5148.  
  5149.    See Also: EraseWindow
  5150.  
  5151.    Category: Display
  5152.  
  5153.    EraseWindow (Number)   EraseWindow (Number)   EraseWindow (Number)
  5154.    Erases a window by number. This allows you to erase a window that is not
  5155.    the top window.
  5156.  
  5157.    See Also: CurrentWindow, SetTopWindow, EraseTopWindow
  5158.  
  5159.    Category: Display
  5160.  
  5161.  
  5162.  
  5163.    Computer Tyme MarxMenu Users Manual                     Page 85
  5164.    _______________________________________________________________
  5165.  
  5166.  
  5167.    Execute (command string)   Execute (command string)   Execute (command string)
  5168.    This allows you to execute a program without dropping out of MarxMenu.
  5169.    MarxMenu remains resident in memory and takes up approximately 50k. No
  5170.    batch file will be created by MarxMenu.
  5171.  
  5172.    This is handy if you have a small program you want to run from the menu
  5173.    but don't want to allow for the time required by MarxMenu to create and
  5174.    run a batch file. You can also execute some programs in a MarxMenu
  5175.    window (See Also: DosWindow). You can also execute a program and examine
  5176.    the return code.
  5177.  
  5178.    This command can be placed in a progression of menu commands without any
  5179.    special handling. Under an OnKey statement, you will need use a vertical
  5180.    bar in front of the command.
  5181.  
  5182.     Example:
  5183.       OnKey 'D'
  5184.        |UseCommand Off
  5185.        |Execute 'C:\DM.COM'  ;Note the COM extension is required here.
  5186.  
  5187.    Note: If UseCommand is True or On, MarxMenu will load COMMAND.COM to
  5188.    execute your command. If UseCommand is False, MarxMenu will execute your
  5189.    file directly without COMMAND.COM. Using COMMAND.COM will execute
  5190.    slightly slower, use 3.5k more ram, and allow you to use command lines
  5191.    just like you would from the DOS prompt.
  5192.  
  5193.    If you set UseCommand to off, you will have to include the COM or EXE
  5194.    extension in the name. If you don't include the extension, MarxMenu will
  5195.    automatically override UseCommand and load the command processor. If the
  5196.    command processor is loaded then you won't be able to read the
  5197.    errorlevel return code from the program you are running.
  5198.  
  5199.    COMMAND.COM is required when running internal DOS commands like COPY or
  5200.    DIR. It is also required to run batch files.
  5201.  
  5202.    When UseCommand is off, MarxMenu will search the PATH for the executable
  5203.    file if it isn't in the current directory.
  5204.  
  5205.    Not using COMMAND.COM allows you to use the ReturnCode variable to get
  5206.    the ERRORLEVEL from the subprogram. If COMMAND.COM is loaded, the
  5207.    ERRORLEVEL of the subprogram is lost.
  5208.  
  5209.    The ClearScreenFirst (On/Off) controls whether MarxMenu will clear the
  5210.    screen before you execute.
  5211.  
  5212.    The PauseAfterExecute (On/Off) allows you to have a pause like the Pause
  5213.    command in batch files. That way you can read the screen before it
  5214.    restores the MarxMenu screen. MarxMenu will display "Press any key to
  5215.    return to MarxMenu."
  5216.  
  5217.  
  5218.  
  5219.    Computer Tyme MarxMenu Users Manual                     Page 86
  5220.    _______________________________________________________________
  5221.  
  5222.  
  5223.    Be sure not to load any TSR programs using the Execute command or
  5224.    MarxMenu will lock up.
  5225.  
  5226.    See Also: UseCommand, DosWindow, PauseAfterExecute, ClearScreenFirst
  5227.  
  5228.    Category: Execution
  5229.  
  5230.    ExistDir (directory) : Boolean   ExistDir (directory) : Boolean   ExistDir (directory) : Boolean
  5231.    Used to test whether or not a DIRECTORY exists. It can also test to see
  5232.    if a disk is inserted in a floppy drive.
  5233.  
  5234.     Example:
  5235.       if not ExistDir 'A:' then Writeln 'Insert disk in drive A:'
  5236.  
  5237.    See Also: ExistFile
  5238.  
  5239.    Category: File
  5240.  
  5241.    ExistFile : Boolean   ExistFile : Boolean   ExistFile : Boolean
  5242.    Used to test whether or not a FILE exists.
  5243.  
  5244.    See Also: ExistDir
  5245.  
  5246.    Category: File
  5247.  
  5248.    ExistOnPath (string) : String   ExistOnPath (string) : String   ExistOnPath (string) : String
  5249.    Used to search the existing paths for the command to be executed by
  5250.    Execute or other function.
  5251.  
  5252.     Example:
  5253.       OnKey 'D'
  5254.       |Execute(ExistOnPath('DM.COM'))
  5255.  
  5256.    If the file is not found, a null string is returned.
  5257.  
  5258.    Category: File
  5259.  
  5260.    ExitCode   ExitCode   ExitCode
  5261.    This can be set so MarxMenu will return an ErrorLevel that can be used
  5262.    in a batch file.
  5263.  
  5264.     Example:
  5265.        ExitCode = 100
  5266.  
  5267.    When MarxMenu exits it will use ErrorLevel 100.
  5268.  
  5269.    Category: Execution
  5270.  
  5271.  
  5272.  
  5273.    Computer Tyme MarxMenu Users Manual                     Page 87
  5274.    _______________________________________________________________
  5275.  
  5276.  
  5277.    ExitMenu   ExitMenu   ExitMenu
  5278.    Causes MarxMenu to exit. If the Bat command is used or batch commands
  5279.    are used onder an OnKey statement then MarxMenu will create a batch file
  5280.    and set the environment variable MXCMD to point to it. If no batch file
  5281.    is to be created, and MXCMD hasn't been set to any value then the menu
  5282.    system will exit by setting MXCMD to MXSTOP.
  5283.  
  5284.    Category: Execution
  5285.  
  5286.    Exp (Real) : Real   Exp (Real) : Real   Exp (Real) : Real
  5287.    Returns the Exponential of a real. Inverse of Ln.
  5288.  
  5289.    Category: Math, Float
  5290.  
  5291.    Explode (on/off)   Explode (on/off)   Explode (on/off)
  5292.    Turn exploding windows on/off.
  5293.  
  5294.    Category: Display
  5295.  
  5296.    ExplodeDelay (number)   ExplodeDelay (number)   ExplodeDelay (number)
  5297.    Sets the speed of exploding windows. Use this command to adjust the
  5298.    speed of the exploding windows. Default is 15.
  5299.  
  5300.    Category: Display
  5301.  
  5302.    Extension (String) : String   Extension (String) : String   Extension (String) : String
  5303.    Returns the Extention of a file name or sets the Extension.
  5304.  
  5305.     Example:
  5306.       Writeln Extension 'MARXMENU.EXE'  ;returns 'EXE'
  5307.  
  5308.     Example:
  5309.       var FileName
  5310.         FileName = TEST.MNU
  5311.         Extension (FileName) = 'MRX'
  5312.         Writeln FileName        ;this returns 'TEST.MRX
  5313.  
  5314.    See Also: NamePart, PathPart, FilePart
  5315.  
  5316.    Category: String
  5317.  
  5318.    FileAppend (FileVar)   FileAppend (FileVar)   FileAppend (FileVar)
  5319.    Opens a file for access and moves the file pointer to the end of the
  5320.    file. File writes will start at the end of the file.
  5321.  
  5322.    Category: File
  5323.  
  5324.  
  5325.  
  5326.    Computer Tyme MarxMenu Users Manual                     Page 88
  5327.    _______________________________________________________________
  5328.  
  5329.  
  5330.    FileAssign (FileVar,String)   FileAssign (FileVar,String)   FileAssign (FileVar,String)
  5331.    Assigns a file variable to a file name. Files must be given a name
  5332.    before they can be accessed.
  5333.  
  5334.     Example: FileAssign(BatFile,'MARX.BAT')
  5335.  
  5336.    BatFile is a variable and after the FileAssign, it becomes a file
  5337.    variable. All access to the file is done using the file variable.
  5338.  
  5339.    If an empty string is passed as the file name, MarxMenu will use the
  5340.    standard console file handles.
  5341.  
  5342.    Category: File
  5343.  
  5344.    FileAttr (string) : Number   FileAttr (string) : Number   FileAttr (string) : Number
  5345.    Returns file attribute. Can be used on directories also.
  5346.  
  5347.    Category: File
  5348.  
  5349.    FileClose (FileVar)   FileClose (FileVar)   FileClose (FileVar)
  5350.    Closes a file and deallocates the memory space used by the file
  5351.    variable.
  5352.  
  5353.    See Also: FileOpen
  5354.  
  5355.    Category: File
  5356.  
  5357.    FileCreate (FileVar)   FileCreate (FileVar)   FileCreate (FileVar)
  5358.    Creates a new file. If the file exists, it overwrites the old one.
  5359.    FileCreate opens the file for output. Do not use FileOpen with
  5360.    FileCreate.
  5361.  
  5362.    Category: File
  5363.  
  5364.    FileDate (string) : Number   FileDate (string) : Number   FileDate (string) : Number
  5365.    Returns file date as 32 bit integer. See Also: DOS manual for date
  5366.    structure.
  5367.  
  5368.    See Also: FileTime
  5369.  
  5370.    Category: File
  5371.  
  5372.    FileFlush (FileVar)   FileFlush (FileVar)   FileFlush (FileVar)
  5373.    Writes any information that is in the file buffers to disk.
  5374.  
  5375.    Category: File
  5376.  
  5377.  
  5378.  
  5379.    Computer Tyme MarxMenu Users Manual                     Page 89
  5380.    _______________________________________________________________
  5381.  
  5382.  
  5383.    FileLog (FileName,String)   FileLog (FileName,String)   FileLog (FileName,String)
  5384.    FileLog opens the file if it exists, or creates it if it doesn't exist.
  5385.    It then seeks to the end of the file and writes the string to the end.
  5386.    The file is then closed. FileLog is typically used for things such as
  5387.    usage tracking.
  5388.  
  5389.     Example:
  5390.        FileLog('USAGE.LOG','Add This Line!')
  5391.  
  5392.    Category: File
  5393.  
  5394.    FileOpen (FileVar)   FileOpen (FileVar)   FileOpen (FileVar)
  5395.    Opens a file for access. FileOpen is not needed if you are using the
  5396.    ReadTextFile command. The following example copies a text file.
  5397.  
  5398.       var Inp Out St
  5399.  
  5400.       FileAssign(Inp,'INPUT.TXT')
  5401.       FileOpen(Inp)
  5402.       FileAssign(Out,'OUTPUT.TXT')
  5403.       FileCreate(Out)
  5404.       while not EndOfFile(Inp)
  5405.          St = FileReadln(Inp)
  5406.          FileWriteln(Out,St)
  5407.       endwhile
  5408.       FileClose(Inp)
  5409.       FileClose(Out)
  5410.  
  5411.    Category: File
  5412.  
  5413.    FilePart (String) : String   FilePart (String) : String   FilePart (String) : String
  5414.    Returns the file part of a file name.
  5415.  
  5416.     Example:
  5417.       NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU.EXE
  5418.  
  5419.    See Also: Extension, PathPart, NamePart
  5420.  
  5421.    Category: String
  5422.  
  5423.    FilePos (FileVar) : Number   FilePos (FileVar) : Number   FilePos (FileVar) : Number
  5424.    Returns the current file position in bytes.
  5425.  
  5426.    Category: File
  5427.  
  5428.  
  5429.  
  5430.    Computer Tyme MarxMenu Users Manual                     Page 90
  5431.    _______________________________________________________________
  5432.  
  5433.  
  5434.    FileReadln (FileVar) : String   FileReadln (FileVar) : String   FileReadln (FileVar) : String
  5435.    Reads one line of an open file returning that line as a string.
  5436.  
  5437.     Example:
  5438.       Line3 = FileReadln(BatFile)
  5439.  
  5440.    See Also: FileOpen
  5441.  
  5442.    Category: File
  5443.  
  5444.    FileRename (Old,New)   FileRename (Old,New)   FileRename (Old,New)
  5445.    Renames a file from old name to new. A file may be moved to a new
  5446.    directory with this command.
  5447.  
  5448.    Category: File
  5449.  
  5450.    FileResult : Number   FileResult : Number   FileResult : Number
  5451.    Returns result code from last file IO. Result codes are the same as
  5452.    Turbo Pascal IOResult codes. These codes usually match the errors
  5453.    returned in the AX register of DOS commands. 0 indicates no problem.
  5454.  
  5455.    Category: File
  5456.  
  5457.    FileSeek (FileVar,Number)   FileSeek (FileVar,Number)   FileSeek (FileVar,Number)
  5458.    Moves the file pointer to a specified place in the file.
  5459.  
  5460.    Category: File
  5461.  
  5462.    FileSize (string) : Number   FileSize (string) : Number   FileSize (string) : Number
  5463.    Returns size of file in bytes.
  5464.  
  5465.    Category: File
  5466.  
  5467.    FileTime (File) : Time   FileTime (File) : Time   FileTime (File) : Time
  5468.    Returns the time of a file in MarxMenu format.
  5469.  
  5470.    See Also: FileDate
  5471.  
  5472.    Category: File, Time
  5473.  
  5474.    FileWrite (FileVar,String)   FileWrite (FileVar,String)   FileWrite (FileVar,String)
  5475.    Writes text to a file.
  5476.  
  5477.    Category: File
  5478.  
  5479.  
  5480.  
  5481.    Computer Tyme MarxMenu Users Manual                     Page 91
  5482.    _______________________________________________________________
  5483.  
  5484.  
  5485.    FileWriteln (FileVar,String)   FileWriteln (FileVar,String)   FileWriteln (FileVar,String)
  5486.    Writes text to a file with a carriage return and a line feed.
  5487.  
  5488.    See Also: FileOpen
  5489.  
  5490.    Category: File
  5491.  
  5492.    FixPath   FixPath   FixPath
  5493.    This command reads your path command and verifies that all the paths are
  5494.    accessable. Any path that isn't accessable is removed from the master
  5495.    environment. This can be used on network drives to eliminate searching
  5496.    paths on fileservers that are no longer accessable.
  5497.  
  5498.    Category: Environment
  5499.  
  5500.    Floppies : Number   Floppies : Number   Floppies : Number
  5501.    Returns number of floppy drives.
  5502.  
  5503.    Category: System
  5504.  
  5505.    ForceExplosion (On/Off)   ForceExplosion (On/Off)   ForceExplosion (On/Off)
  5506.    This changes the explosion status of a window that already exists. This
  5507.    allows windows to implode that didn't explode.
  5508.  
  5509.    Category: Display
  5510.  
  5511.    ForceExtension (String,Ext) : String   ForceExtension (String,Ext) : String   ForceExtension (String,Ext) : String
  5512.    This command forces a file extension on a string.
  5513.  
  5514.     Example:
  5515.       St = ForceExtension('MAIN.MNU','MRX')
  5516.  
  5517.    This sets St equal to MAIN.MRX
  5518.  
  5519.    Category: String
  5520.  
  5521.    Fraction (Real) : Real   Fraction (Real) : Real   Fraction (Real) : Real
  5522.    Returns the fractional part of a real.
  5523.  
  5524.    Category: Math, Float
  5525.  
  5526.  
  5527.  
  5528.    Computer Tyme MarxMenu Users Manual                     Page 92
  5529.    _______________________________________________________________
  5530.  
  5531.  
  5532.    FreeDiskSpace <drive> : Number   FreeDiskSpace <drive> : Number   FreeDiskSpace <drive> : Number
  5533.    Returns free disk space in bytes.
  5534.  
  5535.     Example:
  5536.       Writeln (FreeDiskSpace 'C')
  5537.  
  5538.    FreeDiskSpace only looks at the first character of the string for the
  5539.    drive letter.
  5540.  
  5541.    Category: System
  5542.  
  5543.    FreeEMS : Number   FreeEMS : Number   FreeEMS : Number
  5544.    Returns free EMS memory in bytes.
  5545.  
  5546.    Category: Memory
  5547.  
  5548.    FreeMem(Segment)   FreeMem(Segment)   FreeMem(Segment)
  5549.    FreeMem deallocates memory that was allocated with GetMem. FreeMem
  5550.    automatically knows how much memory to deallocate.
  5551.  
  5552.    See Also: GetMem
  5553.  
  5554.    Category: Memory
  5555.  
  5556.    FreeMemory : Number   FreeMemory : Number   FreeMemory : Number
  5557.    Returns the amount of free memory still available. This is the memory
  5558.    available to MarxMenu or the amount you would have using the Execute
  5559.    command.
  5560.  
  5561.    See Also: ApplicationMemory
  5562.  
  5563.    Category: Memory
  5564.  
  5565.    GetMem (Number) : Segment   GetMem (Number) : Segment   GetMem (Number) : Segment
  5566.    GetMem allocates the amount of memory specified in Number and returns
  5567.    the memory segment where the memory was allocated. The memory segment is
  5568.    filled with 0s. The maximum size of the memory block is 65504 bytes.
  5569.  
  5570.    You can then read and write to this memory area using the Mem commands.
  5571.  
  5572.     Example:
  5573.        var RamBlock
  5574.        RamBlock = GetMem(2000)  ;allocate 2000 bytes of memory
  5575.        Mem(RamBlock,0) = 5      ;writes the number 5 to the first byte
  5576.  
  5577.    See Also: FreeMem
  5578.  
  5579.    Category: Memory
  5580.  
  5581.  
  5582.  
  5583.    Computer Tyme MarxMenu Users Manual                     Page 93
  5584.    _______________________________________________________________
  5585.  
  5586.  
  5587.    GotoXY (column,row)   GotoXY (column,row)   GotoXY (column,row)
  5588.    Move cursor to location column,row in current box.
  5589.  
  5590.    Category: Display, Ansi
  5591.  
  5592.    HexString (Number, Length) : String   HexString (Number, Length) : String   HexString (Number, Length) : String
  5593.    HexString converts a number into a base 16 hexadecimal string. If Length
  5594.    > 0 then the number will have enough leading zeros to make it Length
  5595.    long. If Length = 0 then leading zeros are removed. Length must be 8 or
  5596.    less.
  5597.  
  5598.     Example:
  5599.        Writeln HexSt(253,4)   ;returns 00FD
  5600.        Writeln HexSt(253,0)   ;returns FD
  5601.  
  5602.    See Also: BinString
  5603.  
  5604.    Category: String
  5605.  
  5606.    HiddenAndSystem (On/Off)   HiddenAndSystem (On/Off)   HiddenAndSystem (On/Off)
  5607.    Controls if ReadDirectory will read hidden and system files.
  5608.  
  5609.    See Also: ReadDirectory
  5610.  
  5611.    Category: File
  5612.  
  5613.    HighWord (Number) : Number   HighWord (Number) : Number   HighWord (Number) : Number
  5614.    Returns the value of the upper 16 bits of a number.
  5615.  
  5616.    See Also: LowWord
  5617.  
  5618.    Category: Math
  5619.  
  5620.    Hour : Number   Hour : Number   Hour : Number
  5621.    Return the current hour. 24 hour format.
  5622.  
  5623.    Category: Time
  5624.  
  5625.    HourOf (Date) : Number   HourOf (Date) : Number   HourOf (Date) : Number
  5626.    Returns the hour of a date. If Date is passed as a string it is
  5627.    converted automatically.
  5628.  
  5629.    See Also: TimeOf, BadDate
  5630.  
  5631.    Category: Time
  5632.  
  5633.  
  5634.  
  5635.    Computer Tyme MarxMenu Users Manual                     Page 94
  5636.    _______________________________________________________________
  5637.  
  5638.  
  5639.    Hundredth : Number   Hundredth : Number   Hundredth : Number
  5640.    Returns the 1/100 of a second from the system clock. Note that the
  5641.    system clock timer tick is 1/18 second so don't expect a lot of accuracy
  5642.    here.
  5643.  
  5644.    Category: Time
  5645.  
  5646.    IdleProgram : Procedure   IdleProgram : Procedure   IdleProgram : Procedure
  5647.    IdleProgram is a variable that when set to the location of a procedure
  5648.    allows the procedure to run while waiting at the keyboard. This is done
  5649.    by writing a procedure that will run while waiting for input.
  5650.  
  5651.    The way you use this is to set an internal variable named IdleProgram to
  5652.    the Loc of the procedure you want to run as follows:
  5653.  
  5654.     Example:
  5655.       IdleProgram = Loc MyProcedure
  5656.  
  5657.    Note: Do not use parentheses around MyProcedure.
  5658.  
  5659.    When writing MyProcedure make it as short and quick as possible. As of
  5660.    now, MyProcedure is called continuosly while there is no keyboard input.
  5661.    You can also use a loop in it as follows.
  5662.  
  5663.     Procedure MyProcedure
  5664.        SetItUp
  5665.        while not KBDReady
  5666.           {do your thing}
  5667.        endwhile
  5668.        PutItBack
  5669.     EndProc
  5670.  
  5671.    MarxMenu doesn't automatically exit your procedure or save and restore
  5672.    anything. If you're writing to the screen you have to put everything
  5673.    back the way it was.
  5674.  
  5675.    If you want to run a program at a specific time, here's how it can be
  5676.    done:
  5677.  
  5678.     Procedure MyProcedure
  5679.        if Now = TimeOf('11:00pm')
  5680.           Bat 'NIGHT'             ;run NIGHT.BAT
  5681.           ExitMenu
  5682.        endif
  5683.        if Now = TimeOf('5:00')
  5684.           Bat 'MORNING'           ;run MORNING.BAT
  5685.           ExitMenu
  5686.        endif
  5687.     EndProc
  5688.  
  5689.    To disable IdleProgram run:
  5690.  
  5691.  
  5692.  
  5693.    Computer Tyme MarxMenu Users Manual                     Page 95
  5694.    _______________________________________________________________
  5695.  
  5696.  
  5697.      Dispose(IdleProgram)
  5698.  
  5699.    See Also: Run, Loc, BlankScreenProgram
  5700.  
  5701.    Category: Execution
  5702.  
  5703.    If   If   If
  5704.    Used for conditional program control.
  5705.  
  5706.     Usage:
  5707.  
  5708.     IF (condition) THEN (statement)
  5709.  
  5710.     IF (condition)
  5711.        (statement)
  5712.        (statement)
  5713.     ELSE
  5714.        (statement)
  5715.        (statement)
  5716.     ENDIF
  5717.  
  5718.    Category: Conditional
  5719.  
  5720.    See Also: Else, ElseIf, Then, EndIf
  5721.  
  5722.    InactiveBox (BoxType)   InactiveBox (BoxType)   InactiveBox (BoxType)
  5723.    This is used to select the type of box border to use when a window is
  5724.    not the current window. If any inactive box type is specified, then when
  5725.    you execute another DrawBox, the old window's border changes to the
  5726.    inactive box type. The inactive window also loses its headers and
  5727.    shadows.
  5728.  
  5729.    Note that InActiveBox must be used BEFORE the DrawBox command.
  5730.  
  5731.     Example:
  5732.       InActiveBox (SingleLineBox) ;switches to single line box if
  5733.                                    inactive.
  5734.  
  5735.       InactiveBox (NoBoxBorder)   ;disables InActive effect.
  5736.  
  5737.    See Also: InactiveBoxColor, InactiveShadow
  5738.  
  5739.    Category: Display
  5740.  
  5741.  
  5742.  
  5743.    Computer Tyme MarxMenu Users Manual                     Page 96
  5744.    _______________________________________________________________
  5745.  
  5746.  
  5747.    InactiveBoxColor (foreground,background)   InactiveBoxColor (foreground,background)   InactiveBoxColor (foreground,background)
  5748.    Selects the color of the inactive box window. If Black on Black is
  5749.    selected, (default), the inactive box color is the same as the active
  5750.    box color.
  5751.  
  5752.     Example:
  5753.       BoxBorderColor Yellow Blue
  5754.       InActiveBoxColor Brown Blue
  5755.  
  5756.    See Also: InactiveBox, InactiveShadow
  5757.  
  5758.    Category: Color
  5759.  
  5760.    InactiveShadow (On/Off)   InactiveShadow (On/Off)   InactiveShadow (On/Off)
  5761.    When InactiveShadow is set to off, the window shadow disappears when
  5762.    then window is not the top window.
  5763.  
  5764.    See Also: InactiveBox, InactiveBoxColor
  5765.  
  5766.    Category: Display
  5767.  
  5768.    Include (MenuName)   Include (MenuName)   Include (MenuName)
  5769.    This is used to insert the menu code from another file into the menu
  5770.    that you are compiling.
  5771.  
  5772.     Example:
  5773.       Include 'DOS.MNU'
  5774.  
  5775.    This will compile DOS.MNU into your present menu as if that whole file
  5776.    were part of the menu you are working on.
  5777.  
  5778.    This is useful if you have several menus that share common code. By
  5779.    moving this common code to a separate file, and using an Include
  5780.    statement, you can change the common code and update several menus at
  5781.    once. If you are using overlays, it is a good idea to put your shared
  5782.    variables in an include file. This asures that the shared variables will
  5783.    be the same for all overlays.
  5784.  
  5785.    Changing an include file does not cause MarxMenu to recompile
  5786.    automatically like changing the MNU does. You will have to force it to
  5787.    compile your menus.
  5788.  
  5789.    This can be done several ways. You can type MARXCOMP (menu) or you can
  5790.    just type DEL *.MRX which will cause all the menus to recompile the next
  5791.    time they are run.
  5792.  
  5793.    Category: Misc
  5794.  
  5795.  
  5796.  
  5797.    Computer Tyme MarxMenu Users Manual                     Page 97
  5798.    _______________________________________________________________
  5799.  
  5800.  
  5801.    IncludeDirectories (On/Off)   IncludeDirectories (On/Off)   IncludeDirectories (On/Off)
  5802.    Controls if ReadDirectory will read directories along with file names.
  5803.  
  5804.    See Also: ReadDirectory
  5805.  
  5806.    Category: File
  5807.  
  5808.    InputString (String)   InputString (String)   InputString (String)
  5809.    Preloads a string for the Readln command. The next Readln will have the
  5810.    InputString on the screen for you to edit or accept. Once Readln
  5811.    executes, InputString is cleared to a blank string.
  5812.  
  5813.     Example:
  5814.       InputString = ReadEnv('USERNAME')
  5815.       YourName = Readln
  5816.  
  5817.    Category: Keyboard, String
  5818.  
  5819.    Insert (InsString,OrigString,Pos)   Insert (InsString,OrigString,Pos)   Insert (InsString,OrigString,Pos)
  5820.    Inserts a string into a string.
  5821.  
  5822.     Example:
  5823.       St = 'ABCDEF'
  5824.       Insert('123',St,3)
  5825.  
  5826.    St will become 'ABC123DEF'
  5827.  
  5828.    Category: String
  5829.  
  5830.    InsertMode (On/Off)   InsertMode (On/Off)   InsertMode (On/Off)
  5831.    Turns insert mode on and off for Readln commands.
  5832.  
  5833.    Category: Keyboard
  5834.  
  5835.    Int (Real) : Real   Int (Real) : Real   Int (Real) : Real
  5836.    Returns the integer part of a real as a real.
  5837.  
  5838.    Category: Math, Float
  5839.  
  5840.    Integer (Real) : Number   Integer (Real) : Number   Integer (Real) : Number
  5841.    Returns the integer part of a real as an integer. The fractional part is
  5842.    truncated.
  5843.  
  5844.    Category: Math, Float
  5845.  
  5846.  
  5847.  
  5848.    Computer Tyme MarxMenu Users Manual                     Page 98
  5849.    _______________________________________________________________
  5850.  
  5851.  
  5852.    Intr (Interrupt,Registers)   Intr (Interrupt,Registers)   Intr (Interrupt,Registers)
  5853.    Intr works just like MsDos except that it lets you choose which
  5854.    interrupt you want to call. See MsDos for Details.
  5855.  
  5856.    See Also: MsDos
  5857.  
  5858.    Category: System
  5859.  
  5860.    InverseColor (forecolor,backcolor)   InverseColor (forecolor,backcolor)   InverseColor (forecolor,backcolor)
  5861.    Sets colors for inverse bar used with UseArrows command.
  5862.  
  5863.    Category: Color
  5864.  
  5865.    Jump (menu)   Jump (menu)   Jump (menu)
  5866.    Jumps to another menu and does not return to original menu.
  5867.  
  5868.    Category: Execution
  5869.  
  5870.    KbdReady : Boolean   KbdReady : Boolean   KbdReady : Boolean
  5871.    Returns true if Key is pressed.
  5872.  
  5873.    Category: Keyboard
  5874.  
  5875.    KeySave : String   KeySave : String   KeySave : String
  5876.    Stores your keystrokes that you pressed to get to the menu level where
  5877.    you are at. KeySave is passed to DOS using the SET KSV= command to store
  5878.    your position in the menu system. To make this work, you must execute
  5879.    SavePosition On.
  5880.  
  5881.    This variable can be set by you to force MarxMenu to return to a place
  5882.    in the menu other than where you are. This allows MarxMenu to suggest a
  5883.    next step.
  5884.  
  5885.    See Also: SavePosition
  5886.  
  5887.    Category: String, Environment, Execution
  5888.  
  5889.    KeyFromMouse : Boolean   KeyFromMouse : Boolean   KeyFromMouse : Boolean
  5890.    Normally mouse activity is translated into keystrokes. This variable is
  5891.    set to true if the keystroke came from the mouse.
  5892.  
  5893.    Category: MouseControl
  5894.  
  5895.    KillMusic   KillMusic   KillMusic
  5896.    This command stops the music and de-allocates the memory used by the
  5897.    music buffer.
  5898.  
  5899.    Category: Music
  5900.  
  5901.  
  5902.  
  5903.    Computer Tyme MarxMenu Users Manual                     Page 99
  5904.    _______________________________________________________________
  5905.  
  5906.  
  5907.    LastDrive : String   LastDrive : String   LastDrive : String
  5908.    Returns the drive letter of the last local drive in the system as set by
  5909.    CONFIG.SYS. By default, this is drive letter E. On a Novell network the
  5910.    drive after LastDrive is the first network drive.
  5911.  
  5912.    Category: Novell, System
  5913.  
  5914.    LastKey : String   LastKey : String   LastKey : String
  5915.    LastKey returns the last key that was typed at the keyboard. This can be
  5916.    used after a Readln to determine if the ESC key was pressed or perhaps
  5917.    the up or down arrow keys.
  5918.  
  5919.    Sometimes after the press of an ESC key, MarxMenu wants to exit more
  5920.    levels than you want it to. This can be controlled by setting LastKey =
  5921.    ' ' to stop the abort process.
  5922.  
  5923.    See Also: Readln
  5924.  
  5925.    Category: String
  5926.  
  5927.    Left (string,count) : String   Left (string,count) : String   Left (string,count) : String
  5928.    Returns string starting at the beginning for count characters.
  5929.  
  5930.     Example: Left('ABCDEF',3) returns 'ABC'
  5931.  
  5932.    Category: String
  5933.  
  5934.    Length (string) : Number   Length (string) : Number   Length (string) : Number
  5935.    Returns the length of the string or sets the length of a string.
  5936.  
  5937.     Example: Length('ABCD') returns 4.
  5938.  
  5939.     Example:
  5940.       var St
  5941.         St = '123456'
  5942.         Length(St) = 3
  5943.         Writeln St      ;this produces '123'
  5944.  
  5945.    If you set the length longer than the original string the string is
  5946.    padded with blanks on the end.
  5947.  
  5948.    Category: String
  5949.  
  5950.    Ln (Real) : Real   Ln (Real) : Real   Ln (Real) : Real
  5951.    Returns the Natural Logarithm of a real.
  5952.  
  5953.    Category: Math, Float
  5954.  
  5955.  
  5956.  
  5957.    Computer Tyme MarxMenu Users Manual                     Page 100
  5958.    _______________________________________________________________
  5959.  
  5960.  
  5961.    Loc (Procedure or Variable)   Loc (Procedure or Variable)   Loc (Procedure or Variable)
  5962.    When used with a procedure, Loc returns the location of a procedure for
  5963.    storing in a variable. The variable is later executed using the Run
  5964.    command.
  5965.  
  5966.    When used with a variable, Loc returns the location of a variable rather
  5967.    than it's contents. Thus B = Loc A sets B to point to A.
  5968.  
  5969.     Example:
  5970.        Var A B
  5971.           B = Loc A
  5972.           B = 9
  5973.           Writeln A  ;returns 9
  5974.  
  5975.     Example:
  5976.        Var A
  5977.  
  5978.     TestLoc (Loc A)
  5979.     Writeln A ;returns 9
  5980.  
  5981.     Procedure TestLoc (B)
  5982.        B = 9
  5983.     EndProc
  5984.  
  5985.    The rule is that all indirect location references are resolved in the
  5986.    process of evaluating an expression.
  5987.  
  5988.     Example:
  5989.        Var A B C D
  5990.           B = Loc A
  5991.           C = Loc B
  5992.           D = Loc C
  5993.           D = 9
  5994.           Writeln A   ; Returns 9
  5995.  
  5996.    As you would expect, qualifiers and multidimensional array addressing
  5997.    works with indirect addressing.
  5998.  
  5999.     Example:
  6000.        var A B C D E
  6001.  
  6002.        A[3] = 12
  6003.        C = 3
  6004.        B = Loc C
  6005.  
  6006.        D = Loc E
  6007.        D[7] = 8
  6008.  
  6009.        TestLoc (Loc A[B])
  6010.        Writeln A[B,9,E[7]]
  6011.  
  6012.  
  6013.  
  6014.    Computer Tyme MarxMenu Users Manual                     Page 101
  6015.    _______________________________________________________________
  6016.  
  6017.  
  6018.        Procedure TestLoc (X)
  6019.           Writeln X
  6020.           X[9,D[7]] = 6
  6021.           Writeln X[9,E[7]]
  6022.        EndProc
  6023.  
  6024.    See Also: Run, Actual
  6025.  
  6026.    Category: Variable
  6027.  
  6028.    LockWord (word)   LockWord (word)   LockWord (word)
  6029.    Sets a default word for the console activated keyboard lock. When the
  6030.    screen goes blank, the user has to type the LockWord to unblank the
  6031.    screen. This is a security feature so that if a user leaves the menu
  6032.    unattended, it prevents others from tampering with the system.
  6033.  
  6034.    See Also: LogoffTime, BlankTime
  6035.  
  6036.    Category: Display
  6037.  
  6038.    Logoff   Logoff   Logoff
  6039.    Logoff logs you off the network the same way that LogoffTime does except
  6040.    it does it immediately. See LogoffTime for details as to how.
  6041.  
  6042.    See Also: LogoffTime
  6043.  
  6044.    Category: Execution
  6045.  
  6046.    LogoffTime : Number   LogoffTime : Number   LogoffTime : Number
  6047.    MarxMenu supports automatic logoff after a number of minutes of
  6048.    inactivity set by LogoffTime. This only has effect while you are in the
  6049.    menu and not while an application is running. It is set as follows:
  6050.  
  6051.     LogoffTime = 5 ;sets time to 5 minutes
  6052.  
  6053.    Setting LogoffTime to 0 disbles this feature.
  6054.  
  6055.    On a Novell network the current drive is changed to the first network
  6056.    drive letter. Any map roots on this drive are removed. Then it changes
  6057.    to the \LOGIN directory. Typically the current directory will be set to
  6058.    F:\LOGIN.
  6059.  
  6060.    MarxMenu will first look for a batch file in the \LOGIN directory called
  6061.    OFF.BAT. If it doesn't find it, MarxMenu will look for OFF.BAT on the
  6062.    PATH. If this isn't found, MarxMenu will look for LOGOFF.EXE. If this
  6063.    isn't found, then MarxMenu will look for LOGOUT.COM.
  6064.  
  6065.    LOGOFF.EXE and LOGOUT.COM are executed by stuffing the keyboard buffer.
  6066.  
  6067.    The best way to use this feature is to create an OFF.BAT file in your
  6068.    \LOGIN directory or on the PATH.
  6069.  
  6070.  
  6071.  
  6072.    Computer Tyme MarxMenu Users Manual                     Page 102
  6073.    _______________________________________________________________
  6074.  
  6075.  
  6076.    Logging off is a tricky process and requires that everything is done
  6077.    right in order for it to work. If strange things happen use ECHO ON and
  6078.    PAUSE in you batch files in order to watch what is happening.
  6079.  
  6080.    See Also: LockWord, Logoff
  6081.  
  6082.    Category: Execution
  6083.  
  6084.    Loop   Loop   Loop
  6085.    MarxMenu has a looping structure that lets you execute a piece of code a
  6086.    specific number of times. It is used as follows:
  6087.  
  6088.     Example:
  6089.       Loop 8
  6090.          Writeln 'Pass Number ' LoopIndex
  6091.       EndLoop
  6092.  
  6093.    You start with LOOP (Number) which specifies the number of times to
  6094.    execute the code between LOOP and ENDLOOP. There are 2 variables
  6095.    available here for loop control. LoopIndex starts at 1 and is
  6096.    incremented at each EndLoop. When LoopIndex becomes greater than
  6097.    LoopLimit, the loop exits. LoopIndex and LoopLimit refer to the
  6098.    innermost loop.
  6099.  
  6100.    As loops are nested LoopIndexes and LoopLimits are kept in two arrays;
  6101.    LoopIndexStack and LoopLimitStack. There is also a variable called
  6102.    LoopLevel which points to the current loop parameters.
  6103.  
  6104.     Thus:
  6105.       LoopIndex is the same as LoopIndexStack[LoopLevel]
  6106.       LoopLimit is the same as LoopLimitStack[LoopLevel]
  6107.  
  6108.    You may therefore access outer loop parameters through the loop stacks.
  6109.    For instance LoopIndexStack[LoopLevel - 1] would refer to the second
  6110.    innermost loop index. LoopIndexStack[1] refers to the outermost loop.
  6111.  
  6112.    The loop variables can be read and written to so you can adjust the
  6113.    looping parameters while inside the loop. You can even adjust the
  6114.    parameters of outer loops.
  6115.  
  6116.    You can also pass an array to a loop instead of a number. If an array is
  6117.    passed MarxMenu will loop for the number of elements in that array.
  6118.  
  6119.  
  6120.  
  6121.    Computer Tyme MarxMenu Users Manual                     Page 103
  6122.    _______________________________________________________________
  6123.  
  6124.  
  6125.     Example:
  6126.        Var X
  6127.        ReadTextFile('MARXREAD.ME',X)
  6128.        OpenPrinter
  6129.          ;Loop X is the same as Loop NumberOfElements X
  6130.        Loop X
  6131.           PrintLn X[LoopIndex]
  6132.        EndLoop
  6133.        ClosePrinter
  6134.  
  6135.    See Also: EndLoop, LoopIndex, LoopLimit, LoopLevel
  6136.  
  6137.    Category: Conditional
  6138.  
  6139.    LoopIndex : Number   LoopIndex : Number   LoopIndex : Number
  6140.    Returns the index of the loop you are in.
  6141.  
  6142.    See Also: Loop, EndLoop, LoopLimit, LoopLevel
  6143.  
  6144.    Category: Conditional
  6145.  
  6146.    LoopLevel : Number   LoopLevel : Number   LoopLevel : Number
  6147.    Returns the number of nested loops currently running. This includes all
  6148.    nested loops not just the current procedure.
  6149.  
  6150.    See Also: Loop, EndLoop, LoopLimit, LoopIndex
  6151.  
  6152.    Category: Conditional
  6153.  
  6154.    LoopLimit : Number   LoopLimit : Number   LoopLimit : Number
  6155.    Returns the upper limit of the loop you are in.
  6156.  
  6157.    See Also: Loop, EndLoop, LoopIndex, LoopLevel
  6158.  
  6159.    Category: Conditional
  6160.  
  6161.    MachineName : String   MachineName : String   MachineName : String
  6162.    This reads or sets the MachineName for NetBios networks.
  6163.  
  6164.     Example:
  6165.        MachineName = IBM   ;sets the MachineName
  6166.        Writeln MachineName ;displays the MachineName
  6167.  
  6168.    Category: Novell, MSNet, Vines
  6169.  
  6170.  
  6171.  
  6172.    Computer Tyme MarxMenu Users Manual                     Page 104
  6173.    _______________________________________________________________
  6174.  
  6175.  
  6176.    LowWord (Number) : Number   LowWord (Number) : Number   LowWord (Number) : Number
  6177.    Returns the value of the lower 16 bits of a number.
  6178.  
  6179.    See Also: HighWord
  6180.  
  6181.    Category: Math
  6182.  
  6183.    MakeListEntry (Local Name, Server Name)   MakeListEntry (Local Name, Server Name)   MakeListEntry (Local Name, Server Name)
  6184.    MakeListEntry adds an entry to the network redirection list for
  6185.    assigning drive letters to network servers or redirecting printer output
  6186.    to network printers.
  6187.  
  6188.     Example:
  6189.       MakeListEntry ('P:','\\TYME\SYS\PUBLIC')
  6190.       MakeListEntry ('LPT1','\\TYME\LASER')
  6191.  
  6192.    See Also: AssignList, CancelListEntry
  6193.  
  6194.    Category: Novell, MSNet, Vines
  6195.  
  6196.    MarxVersion : String   MarxVersion : String   MarxVersion : String
  6197.    Returns the version number of the MarxMenu you are running.
  6198.  
  6199.    Category: String
  6200.  
  6201.    MasterEnvironment   MasterEnvironment   MasterEnvironment
  6202.    MasterEnvironment selects the Master Environment for use with
  6203.    environment access commands.
  6204.  
  6205.    See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
  6206.    See Also: CurrentEnvironment ParentEnvironment
  6207.  
  6208.    Category: Environment
  6209.  
  6210.    Max (Num,Num) : Num   Max (Num,Num) : Num   Max (Num,Num) : Num
  6211.    Returns the largest of two numbers or strings.
  6212.  
  6213.     Example:
  6214.       Writeln Max(2,3)     ;returns 3
  6215.  
  6216.    See Also: Min
  6217.  
  6218.    Category: Math, String, Float
  6219.  
  6220.  
  6221.  
  6222.    Computer Tyme MarxMenu Users Manual                     Page 105
  6223.    _______________________________________________________________
  6224.  
  6225.  
  6226.    Mem (seg,ofs) : Number   Mem (seg,ofs) : Number   Mem (seg,ofs) : Number
  6227.    Returns the byte at memory location seg:ofs or lets you write to the
  6228.    byte at seg:ofs.
  6229.  
  6230.     Example:
  6231.       X = Mem(40,5)  ;reads memory into X
  6232.       Mem(40,5) = X  ;writes X into memory
  6233.  
  6234.    See Also: MemW, MemL
  6235.  
  6236.    Category: Memory
  6237.  
  6238.    MemL (seg,ofs) : Number   MemL (seg,ofs) : Number   MemL (seg,ofs) : Number
  6239.    Returns the long integer at memory location seg:ofs or lets you write to
  6240.    the byte at seg:ofs.
  6241.  
  6242.     Example:
  6243.       X = MemL(40,5)  ;reads memory into X
  6244.       MemL(40,5) = X  ;writes X into memory
  6245.  
  6246.    See Also: Mem, MemW
  6247.  
  6248.    Category: Memory
  6249.  
  6250.    MemSize : Number   MemSize : Number   MemSize : Number
  6251.    Returns total memory size in K. (640 = 640k)
  6252.  
  6253.    Category: Memory
  6254.  
  6255.    MemW (seg,ofs) : Number   MemW (seg,ofs) : Number   MemW (seg,ofs) : Number
  6256.    Returns the word at memory location seg:ofs or lets you write to the
  6257.    byte at seg:ofs.
  6258.  
  6259.     Example:
  6260.       X = MemW(40,5)  ;reads memory into X
  6261.       MemW(40,5) = X  ;writes X into memory
  6262.  
  6263.    See Also: Mem, MemL
  6264.  
  6265.    Category: Memory
  6266.  
  6267.  
  6268.  
  6269.    Computer Tyme MarxMenu Users Manual                     Page 106
  6270.    _______________________________________________________________
  6271.  
  6272.  
  6273.    MenuKeyBuffer   MenuKeyBuffer   MenuKeyBuffer
  6274.    This is an internal MarxMenu variable. It is where the environment
  6275.    variable KSV= is read. Characters in this string variable are treated as
  6276.    if someone had typed them from the keyboard.
  6277.  
  6278.    This variable can be set to blank in order to override the effects of
  6279.    SET KSV= or can be set to a different value in order to automatically
  6280.    make selections as if they were typed in.
  6281.  
  6282.    See Also: SavePosition, KeySave
  6283.  
  6284.    Category: Keyboard
  6285.  
  6286.    Mid (string,pos,count) : String   Mid (string,pos,count) : String   Mid (string,pos,count) : String
  6287.    Returns a string starting at pos for count.
  6288.  
  6289.     Example:
  6290.       Mid('ABCDEFG',2,3) returns 'CDE'
  6291.  
  6292.    Category: String
  6293.  
  6294.    Min (Num,Num) : Num   Min (Num,Num) : Num   Min (Num,Num) : Num
  6295.    Returns the smallest of two numbers or strings.
  6296.  
  6297.     Example:
  6298.       Writeln Min(2,3)     ;returns 2
  6299.  
  6300.    See Also: Max
  6301.  
  6302.    Category: Math, String, Float
  6303.  
  6304.    MinorDosVersion : Number   MinorDosVersion : Number   MinorDosVersion : Number
  6305.    Returns the minor DOS version number.
  6306.  
  6307.    See Also: DosVersion, DosVersionString
  6308.  
  6309.    Category: System
  6310.  
  6311.    Minute : Number   Minute : Number   Minute : Number
  6312.    Returns the current minute.
  6313.  
  6314.    Category: Time
  6315.  
  6316.    MinuteOf (Date) : Number   MinuteOf (Date) : Number   MinuteOf (Date) : Number
  6317.    Returns the minute of a date. If Date is passed as a string it is
  6318.    converted automatically.
  6319.  
  6320.    See Also: TimeOf, BadDate
  6321.  
  6322.    Category: Time
  6323.  
  6324.  
  6325.  
  6326.    Computer Tyme MarxMenu Users Manual                     Page 107
  6327.    _______________________________________________________________
  6328.  
  6329.  
  6330.    MkDir (String)   MkDir (String)   MkDir (String)
  6331.    Makes a new directory. The FileResult variable returns the DOS result
  6332.    error code. A zero in FileResult indicates success.
  6333.  
  6334.     Example:
  6335.        MkDir 'C:\MARX'
  6336.  
  6337.    See Also: ChDir, RmDir
  6338.  
  6339.    Category: File
  6340.  
  6341.    Mod : Operator   Mod : Operator   Mod : Operator
  6342.    Returns the remainder of the division of two numbers.
  6343.  
  6344.    Category: Math
  6345.  
  6346.    ModifyPath   ModifyPath   ModifyPath
  6347.    The MarxMenu directory should be in the search path. This is because if
  6348.    you change directories, MarxMenu may not be able to find the menu files.
  6349.    MarxMenu will now test the PATH= environment variable before it writes
  6350.    the batch file to execute a program. If the MarxMenu path is not
  6351.    included, MarxMenu will add the path to the Master Environment if it
  6352.    can.
  6353.  
  6354.    If for some reason you don't want to allow MarxMenu to modify the master
  6355.    environment, use the command:
  6356.  
  6357.     ModifyPath Off
  6358.  
  6359.    Category: Environment
  6360.  
  6361.    Month : Number   Month : Number   Month : Number
  6362.    Returns current month.
  6363.  
  6364.    Category: Time
  6365.  
  6366.    MonthOf (Date) : Number   MonthOf (Date) : Number   MonthOf (Date) : Number
  6367.    Returns the month of a date. If Date is passed as a string it is
  6368.    converted automatically.
  6369.  
  6370.    See Also: TimeOf, BadDate
  6371.  
  6372.    Category: Time
  6373.  
  6374.  
  6375.  
  6376.    Computer Tyme MarxMenu Users Manual                     Page 108
  6377.    _______________________________________________________________
  6378.  
  6379.  
  6380.    Mouse   Mouse   Mouse
  6381.    MarxMenu normally uses the mouse if present. If you don't want to use
  6382.    the mouse you can use the command:
  6383.  
  6384.     Mouse Off
  6385.  
  6386.    To turn the mouse back on type:
  6387.  
  6388.     Mouse On
  6389.  
  6390.    The mouse is actually switched on and off at the point when MarxMenu
  6391.    waits at the keyboard for a keypress.
  6392.  
  6393.    Mouse Sensitivity can be set for individual workstations on a network by
  6394.    setting environment variables MouseX and MouseY as follows:
  6395.  
  6396.     Set MouseX=15
  6397.     Set MouseY=25
  6398.  
  6399.    See Also: MouseHorizontal, MouseVertical
  6400.  
  6401.    Category: MouseControl
  6402.  
  6403.    MouseHorizontal (Number)   MouseHorizontal (Number)   MouseHorizontal (Number)
  6404.    Controls the horizontal sensitivity of the mouse. The larger the number,
  6405.    the less sensitive the mouse. Default is 25.
  6406.  
  6407.    See Also: MouseVertical, Mouse
  6408.  
  6409.    Category: MouseControl
  6410.  
  6411.    MouseVertical (Number)   MouseVertical (Number)   MouseVertical (Number)
  6412.    Controls the vertical sensitivity of the mouse. The larger the number,
  6413.    the less sensitive the mouse. Default is 15.
  6414.  
  6415.    See Also: MouseHorizontal, Mouse
  6416.  
  6417.    Category: MouseControl
  6418.  
  6419.    MoveWindow (Horizontal,Vertical)   MoveWindow (Horizontal,Vertical)   MoveWindow (Horizontal,Vertical)
  6420.    Moves top window. If (Horizontal) is negative motion is left. If
  6421.    <Vertical> is negative, motion is up.
  6422.  
  6423.     Example:
  6424.       MoveWindow -3 4 ;moves window 3 spaces left and 4 down
  6425.  
  6426.    Category: Display
  6427.  
  6428.  
  6429.  
  6430.    Computer Tyme MarxMenu Users Manual                     Page 109
  6431.    _______________________________________________________________
  6432.  
  6433.  
  6434.    MsDos (Registers)   MsDos (Registers)   MsDos (Registers)
  6435.    MsDos calls the interrupt 21h system call using values passed in an
  6436.    array of 10 numbers. The array is set up using predefined Qualifiers
  6437.    that represent the registers that are passed. These qualifiers are:
  6438.  
  6439.     AX BX CX DX DI SI DS ES BP FL
  6440.  
  6441.     Example: Get Current Drive
  6442.       var Reg
  6443.       Reg.AX = $1900
  6444.       MsDos(Reg)
  6445.       Writeln Char(LowWord(Reg.AX) + 1) ':'     ;writes C:
  6446.  
  6447.    See Also: Intr
  6448.  
  6449.    Category: System
  6450.  
  6451.    MxCmd : String   MxCmd : String   MxCmd : String
  6452.    This is an internal string variable that is written to the environment
  6453.    variable MXCMD. This variable can be written to control what MarxMenu
  6454.    will write to the Shell Environment. If this variable is written to, it
  6455.    overrides anything that MarxMenu automatically writes.
  6456.  
  6457.     Example:
  6458.       OnKey 'A'
  6459.         |MxCmd = 'SHUTDOWN.BAT'
  6460.         |ExitMenu
  6461.  
  6462.    Category: Environment, String, Execution
  6463.  
  6464.    NamePart (String) : String   NamePart (String) : String   NamePart (String) : String
  6465.    Returns the name part of a file name.
  6466.  
  6467.     Example:
  6468.       NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU
  6469.  
  6470.    See Also: Extension, PathPart, FilePart
  6471.  
  6472.    Category: String
  6473.  
  6474.    NetworkVersion : Boolean   NetworkVersion : Boolean   NetworkVersion : Boolean
  6475.    Returns true if you are running the network version of MarxMenu.
  6476.  
  6477.    Category: Misc
  6478.  
  6479.  
  6480.  
  6481.    Computer Tyme MarxMenu Users Manual                     Page 110
  6482.    _______________________________________________________________
  6483.  
  6484.  
  6485.    NextWord (String) : String   NextWord (String) : String   NextWord (String) : String
  6486.    This command returns the next logical word of a string variable and
  6487.    removes the string from the original string.
  6488.  
  6489.     Example:
  6490.       StringA = 'one two three'
  6491.       StringB = NextWord(StringA)
  6492.  
  6493.       StringB contains 'one'
  6494.       StringA contains 'two three'
  6495.  
  6496.    Category: String
  6497.  
  6498.  
  6499.    Nil   Nil   Nil
  6500.    Nil returns a zero or empty value for any type data. As a boolean Nil
  6501.    returns False. As a number Nil returns 0. As a string, Nil returns an
  6502.    empty string.
  6503.  
  6504.    Category: Misc
  6505.  
  6506.    NoBoxBorder   NoBoxBorder   NoBoxBorder
  6507.    Use this command if you don't want a border around the menus.
  6508.  
  6509.    See Also: SingleLineBox, DoubleLineBox, BlockBox, CustomBox
  6510.  
  6511.    Category: Display
  6512.  
  6513.    NoExit   NoExit   NoExit
  6514.    Prevents ESC key from allowing you to exit menu. To exit, you must
  6515.    execute the ExitMenu command. This could be password protected.
  6516.  
  6517.    See Also: ExitMenu
  6518.  
  6519.    Category: Execution
  6520.  
  6521.    Not : Operator   Not : Operator   Not : Operator
  6522.    Returns logical Not if operators are boolean; or bitwise Not if
  6523.    operators are numeric.
  6524.  
  6525.    Category: Math, Boolean
  6526.  
  6527.    NotesLeft : Num   NotesLeft : Num   NotesLeft : Num
  6528.    NotesLeft returns the number of notes left in the music buffer to play.
  6529.    The music buffer is self adjusting and can store days worth of music.
  6530.  
  6531.    Category: Music
  6532.  
  6533.  
  6534.  
  6535.    Computer Tyme MarxMenu Users Manual                     Page 111
  6536.    _______________________________________________________________
  6537.  
  6538.  
  6539.    NotesPlayed : Num   NotesPlayed : Num   NotesPlayed : Num
  6540.    Returns the number of notes played. If NotesLeft ever reaches 0,
  6541.    NotesPlayed also is set to 0.
  6542.  
  6543.    Category: Music
  6544.  
  6545.    NovAccountExpDate (UserName) : Date   NovAccountExpDate (UserName) : Date   NovAccountExpDate (UserName) : Date
  6546.    Returns the Novell account expiration date. You must be logged in to be
  6547.    able to read this.
  6548.  
  6549.     Example:
  6550.        DaysToExpire = NovAccountExpDate(UserName) - Today / SecondsInDay
  6551.  
  6552.    Category: Novell, Time
  6553.  
  6554.    NovAddUserToGroup (User,Group)   NovAddUserToGroup (User,Group)   NovAddUserToGroup (User,Group)
  6555.    Adds a user to a group and updates GROUPS_I'M_IN, GROUP_MEMBERS, and
  6556.    SECURITY_EQUALS properties.
  6557.  
  6558.    See Also: NovRemoveUserFromGroup
  6559.  
  6560.    Category: Novell
  6561.  
  6562.    NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)   NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)   NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)
  6563.    Adds an object to a property that is a set property.
  6564.  
  6565.     Example: Add a user to a group
  6566.        NovAddToSet(Group,'GROUP_MEMBERS',2,User,1)
  6567.        NovAddToSet(User,"GROUPS_I'M_IN",1,Group,2)
  6568.        NovAddToSet(User,'SECURITY_EQUALS',1,Group,2)
  6569.  
  6570.    See Also: NovDeleteFromSet, NovSetProperty
  6571.  
  6572.    Category: Novell
  6573.  
  6574.    NovAttach (Server)   NovAttach (Server)   NovAttach (Server)
  6575.    NovAttach is used to create a software link between you and a server,
  6576.    usually a second server. It must be followed by a NovLogin command to
  6577.    log you into the server if you want to do anything useful there.
  6578.  
  6579.    See Also: NovDetach
  6580.  
  6581.    Category: Novell
  6582.  
  6583.    NovAttahedServers (Array)   NovAttahedServers (Array)   NovAttahedServers (Array)
  6584.    Returns a list of servers you are already attached to.
  6585.  
  6586.    See Also: NovServers
  6587.  
  6588.    Category: Novell, Array
  6589.  
  6590.  
  6591.  
  6592.    Computer Tyme MarxMenu Users Manual                     Page 112
  6593.    _______________________________________________________________
  6594.  
  6595.  
  6596.    NovBroadcastMode (Mode)   NovBroadcastMode (Mode)   NovBroadcastMode (Mode)
  6597.    This reads or sets the message broadcast mode.
  6598.  
  6599.     Example:
  6600.        Writeln NovBroadcastMode
  6601.        BroadcastMode = 3
  6602.  
  6603.     Modes:
  6604.        0 - All Messages, same as running CastOn
  6605.        1 - Server messages only, same as running CastOff
  6606.        2 - Same as 0 but user has to poll server for messages
  6607.        3 - Same as 1 but user has to poll server for messages
  6608.  
  6609.    See Also: NovSendMessage, NovGetMessage
  6610.  
  6611.    Category: Novell
  6612.  
  6613.    NovCaptureCopies (Port) : Number   NovCaptureCopies (Port) : Number   NovCaptureCopies (Port) : Number
  6614.    NovCaptureCopies reads or sets the number of copies to print for a
  6615.    particular port.
  6616.  
  6617.     Example:
  6618.        NovCaptureCopies (2) = 5      ;Sets LPT2 to print 5 copies
  6619.        Writeln NovCaptureCopies (2)  ;displays the copies setting on LPT2
  6620.  
  6621.    See Also: NovCaptureQueue
  6622.  
  6623.    Category: Novell, Printer
  6624.  
  6625.    NovCaptureFF (Port) On/Off   NovCaptureFF (Port) On/Off   NovCaptureFF (Port) On/Off
  6626.    NovCaptureFF reads or sets the printer Form Feed function of a
  6627.    particular port.
  6628.  
  6629.     Example:
  6630.        NovCaptureFF (2) On       ;Sets LPT2 Form Feed to On
  6631.        Writeln NovCaptureFF (2)  ;displays the Form Feed setting on LPT2
  6632.  
  6633.    See Also: NovCaptureQueue
  6634.  
  6635.    Category: Novell, Printer
  6636.  
  6637.  
  6638.  
  6639.    Computer Tyme MarxMenu Users Manual                     Page 113
  6640.    _______________________________________________________________
  6641.  
  6642.  
  6643.    NovCaptureForm (Port) : Number   NovCaptureForm (Port) : Number   NovCaptureForm (Port) : Number
  6644.    NovCaptureForm reads or sets the printer form of a particular port.
  6645.  
  6646.     Example:
  6647.        NovCaptureForm (2) = 3      ;Sets LPT2 to form 3
  6648.        Writeln NovCaptureForm (2)  ;displays the form setting on LPT2
  6649.  
  6650.    See Also: NovCaptureQueue
  6651.  
  6652.    Category: Novell, Printer
  6653.  
  6654.    NovCaptureQueue (Port)   NovCaptureQueue (Port)   NovCaptureQueue (Port)
  6655.    Returns the name of the queue that the port is being captured to. A nul
  6656.    string indicates capturing is not active. This command can also be used
  6657.    to start capturing and set the queue to capture.
  6658.  
  6659.     Example:
  6660.        Writeln NovCaptureQueue (2)    ;shows capture queue for LPT2
  6661.        NovCaptureQueue (2) = 'LASER'  ;captures LPT2 to server Laser Printer
  6662.  
  6663.    Category: Novell, Printer
  6664.  
  6665.    NovCaptureReset (Port) : String   NovCaptureReset (Port) : String   NovCaptureReset (Port) : String
  6666.    NovCaptureReset can read or set the reset string for a print queue.
  6667.  
  6668.     Example:
  6669.       NovCaptureReset (1) = Esc + char($15)
  6670.       Writeln NovCaptureReset (1) ;reads the capture setup string
  6671.  
  6672.    See Also: NovCaptureSetup
  6673.  
  6674.    Category: Novell, Printer
  6675.  
  6676.    NovCaptureSetup (Port) : String   NovCaptureSetup (Port) : String   NovCaptureSetup (Port) : String
  6677.    NovCaptureSetup can read or set the setup string for a print queue.
  6678.  
  6679.     Example:
  6680.       NovCaptureSetup (1) = Esc + char($15)
  6681.       Writeln NovCaptureSetup (1) ;reads the capture setup string
  6682.  
  6683.    See Also: NovCaptureReset
  6684.  
  6685.    Category: Novell, Printer
  6686.  
  6687.  
  6688.  
  6689.    Computer Tyme MarxMenu Users Manual                     Page 114
  6690.    _______________________________________________________________
  6691.  
  6692.  
  6693.    NovCaptureTabSize (Port) : number   NovCaptureTabSize (Port) : number   NovCaptureTabSize (Port) : number
  6694.    NovCaptureTabSize reads or sets the printer TabSize of a particular
  6695.    port. Range is 1 - 18.
  6696.  
  6697.     Example:
  6698.        NovCaptureTabSize (2) = 8       ;Sets LPT2 TabSize to 8 spaces
  6699.        Writeln NovCaptureTabSize (2)   ;displays the TabSize setting on LPT2
  6700.  
  6701.    See Also: NovCaptureQueue
  6702.  
  6703.    Category: Novell, Printer
  6704.  
  6705.    NovCaptureTimeOut (Port) : number   NovCaptureTimeOut (Port) : number   NovCaptureTimeOut (Port) : number
  6706.    NovCaptureTimeOut reads or sets the printer TimeOut of a particular port.
  6707.  
  6708.     Example:
  6709.        NovCaptureTimeOut (2) = 10      ;Sets LPT2 to 10 second TimeOut
  6710.        Writeln NovCaptureTimeOut (2)   ;displays the TimeOut setting on LPT2
  6711.  
  6712.    See Also: NovCaptureQueue
  6713.  
  6714.    Category: Novell, Printer
  6715.  
  6716.    NovCaptureUseBanner (Port)   NovCaptureUseBanner (Port)   NovCaptureUseBanner (Port)
  6717.    This reads or sets weather or not a print banner is used.
  6718.  
  6719.     Example:
  6720.        Writeln NovCaptureUseBanner (2)  ;displays if LPT2 is using a banner
  6721.        NovCaptureBanner (2) = On        ;sets banner to on for LPT2
  6722.  
  6723.    See Also: NovCaptureQueue
  6724.  
  6725.    Category: Novell, Printer
  6726.  
  6727.    NovChangePassword (OldPassword,NewPassword)   NovChangePassword (OldPassword,NewPassword)   NovChangePassword (OldPassword,NewPassword)
  6728.    Changes the novell users password from OldPassword to NewPassword.
  6729.  
  6730.    Category: Novell
  6731.  
  6732.    NovCleanVolumeName (String) : String   NovCleanVolumeName (String) : String   NovCleanVolumeName (String) : String
  6733.    Returns a string containing the server and volume name of a file name or
  6734.    directory.
  6735.  
  6736.     Example:
  6737.       Writeln NovCleanVolumeName('G:')   ;Returns 'MARX/SYS:LOGIN'
  6738.  
  6739.    See Also: CleanFileName
  6740.  
  6741.    Category: Novell
  6742.  
  6743.  
  6744.  
  6745.    Computer Tyme MarxMenu Users Manual                     Page 115
  6746.    _______________________________________________________________
  6747.  
  6748.  
  6749.    NovClearConnection (Connection Number)   NovClearConnection (Connection Number)   NovClearConnection (Connection Number)
  6750.    Disconnects a specific connection number from the server. Requires
  6751.    console operator rights to use this command.
  6752.  
  6753.    Category: Novell
  6754.  
  6755.    NovCloseSemaphore (Name)   NovCloseSemaphore (Name)   NovCloseSemaphore (Name)
  6756.    This closes semaphore Name. If there are no other users using this
  6757.    semaphore, it is deleted.
  6758.  
  6759.    Category: Novell
  6760.  
  6761.    NovConnection : Number   NovConnection : Number   NovConnection : Number
  6762.    This returns the logical connection number to the network. A zero
  6763.    indicates that you are not connected.
  6764.  
  6765.    Category: Novell
  6766.  
  6767.    NovConnectionsInUse : Number   NovConnectionsInUse : Number   NovConnectionsInUse : Number
  6768.    Returns the number of connections in use.
  6769.  
  6770.    Category: Novell
  6771.  
  6772.    NovConsoleOperator : Boolean   NovConsoleOperator : Boolean   NovConsoleOperator : Boolean
  6773.    This returns true if the user has Console Operator priviledges. This can
  6774.    come in handy when you are trying to determine who gets access to the
  6775.    command line.
  6776.  
  6777.    Category: Novell
  6778.  
  6779.    NovCreateObject (Name, ObjectType)   NovCreateObject (Name, ObjectType)   NovCreateObject (Name, ObjectType)
  6780.    Creates a bindary object of a specific object type. If NovStaticObject
  6781.    is set to true, then the object will be permanent unless it is deleted.
  6782.    If set to false, then the object will be automatically deleted if the
  6783.    file server is rebooted.
  6784.  
  6785.     Example:
  6786.     NovStaticObject Off              ;make property dynamic
  6787.     NovObjectSecurity $13            ;logged in read, supervisor write
  6788.     NovCreateObject ('MARXMENU',600) ;create the property
  6789.  
  6790.    NovObjectSecurity controls who can access the object. The default
  6791.    security is $11 which allows anyone logged into the network to access
  6792.    the object for both read and write.
  6793.  
  6794.    See Also: NovStaticObject, NovObjectSecurity, NovDeleteObject
  6795.  
  6796.    Category: Novell
  6797.  
  6798.  
  6799.  
  6800.    Computer Tyme MarxMenu Users Manual                     Page 116
  6801.    _______________________________________________________________
  6802.  
  6803.  
  6804.    NovCreateProperty (Object, Property, ObjectType)   NovCreateProperty (Object, Property, ObjectType)   NovCreateProperty (Object, Property, ObjectType)
  6805.    Creates a property on the object. The security of the property is
  6806.    controlled by setting the variable NovPropertySecurity. You can also
  6807.    control if the property is an item property or a set property. This is
  6808.    done by setting NovSetProperty to True or False.
  6809.  
  6810.    If NovStaticProperty is true then the property will remain until someone
  6811.    deletes it. If it is not static (dynamic) then it will be deleted if the
  6812.    server is rebooted.
  6813.  
  6814.    A set property contains a list of objects. An item property contains a
  6815.    value up to 128 bytes long. The value can be anything.
  6816.  
  6817.     Example:
  6818.     NovSetProperty On             ;use set property
  6819.     NovStaticProperty Off         ;make property dynamic
  6820.     NovPropertySecurity $13       ;logged in read, supervisor write
  6821.     NovCreateProperty ('MARXMENU','USERS',600) ;create the property
  6822.  
  6823.    See Also: NovStaticProperty, NovPropertySecurity, NovDeleteProperty
  6824.  
  6825.    Category: Novell
  6826.  
  6827.    NovDefaultServer : String   NovDefaultServer : String   NovDefaultServer : String
  6828.    Returns the name of the default file server.
  6829.  
  6830.    Category: Novell
  6831.  
  6832.    NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)   NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)   NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)
  6833.    Deletes an object from a property that is a set property.
  6834.  
  6835.     Example: Remove a user to a group
  6836.        NovDeleteFromSet(Group,'GROUP_MEMBERS',2,User,1)
  6837.        NovDeleteFromSet(User,"GROUPS_I'M_IN",1,Group,2)
  6838.        NovDeleteFromSet(User,'SECURITY_EQUALS',1,Group,2)
  6839.  
  6840.    See Also: NovAddToSet, NovSetProperty
  6841.  
  6842.    Category: Novell
  6843.  
  6844.    NovDeleteObject (Object,Type)   NovDeleteObject (Object,Type)   NovDeleteObject (Object,Type)
  6845.    Deletes an object from the bindary.
  6846.  
  6847.    Category: Novell
  6848.  
  6849.  
  6850.  
  6851.    Computer Tyme MarxMenu Users Manual                     Page 117
  6852.    _______________________________________________________________
  6853.  
  6854.  
  6855.    NovDetach (Server)   NovDetach (Server)   NovDetach (Server)
  6856.    This is used to drop the connection to a server. It also logs you off.
  6857.  
  6858.    See Also: NovAttach
  6859.  
  6860.    Category: Novell
  6861.  
  6862.    NovDownServer   NovDownServer   NovDownServer
  6863.    Takes the file server down if there are no files open.
  6864.  
  6865.    See Also: NovForceDownServer
  6866.  
  6867.    Category: Novell
  6868.  
  6869.    NovEndCapture (Port)   NovEndCapture (Port)   NovEndCapture (Port)
  6870.    Ends printer capture for LPT ports.
  6871.  
  6872.     Example:
  6873.        NovEndCapture (1)  ;cancels LPT1 capture
  6874.  
  6875.    See Also: NovCaptureQueue
  6876.  
  6877.    Category: Novell, Printer
  6878.  
  6879.    NovFreeDirSlots (Path) : Number   NovFreeDirSlots (Path) : Number   NovFreeDirSlots (Path) : Number
  6880.    Returns the number of free directory slots for this volume.
  6881.  
  6882.     Example:
  6883.       Writeln NovFreeDirSlots 'SYS:'
  6884.       Writeln NovFreeDirSlots 'F:'
  6885.  
  6886.    See Also: NovTotalDirSlots
  6887.  
  6888.    Category: Novell
  6889.  
  6890.    NovFreeVolumeSpace (Path) : Number   NovFreeVolumeSpace (Path) : Number   NovFreeVolumeSpace (Path) : Number
  6891.    Returns the free file space of the volume in bytes.
  6892.  
  6893.     Example:
  6894.       Writeln NovFreeVolumeSpace 'SYS:'
  6895.       Writeln NovFreeVolumeSpace 'F:'
  6896.  
  6897.    See Also: NovTotalVolumeSpace
  6898.  
  6899.    Category: Novell
  6900.  
  6901.  
  6902.  
  6903.    Computer Tyme MarxMenu Users Manual                     Page 118
  6904.    _______________________________________________________________
  6905.  
  6906.  
  6907.    NovForceDownServer   NovForceDownServer   NovForceDownServer
  6908.    Takes the file server down regardless of open files.
  6909.  
  6910.    See Also: NovDownServer
  6911.  
  6912.    Category: Novell
  6913.  
  6914.    NovFullName (User)   NovFullName (User)   NovFullName (User)
  6915.    Returns the Full Name of the user as set by syscon. If NovFullName is
  6916.    used without a parameter then MyLoginName is assumed.
  6917.  
  6918.    See Also: NovLoginName
  6919.  
  6920.    Category: Novell
  6921.  
  6922.    NovGetMessage : String   NovGetMessage : String   NovGetMessage : String
  6923.    When in broadcast mode 2 or 3 this polls the server for stored messages
  6924.    and returns them if found.
  6925.  
  6926.    See Also: NovSendMessage, NovBroadcastMode
  6927.  
  6928.    Category: Novell
  6929.  
  6930.    NovGraceLoginReset (User) : Num   NovGraceLoginReset (User) : Num   NovGraceLoginReset (User) : Num
  6931.  
  6932.    Returns the number of grace logins that Novell resets when the user
  6933.    changes his password.
  6934.  
  6935.     Example:
  6936.        Writeln NovGraceLoginReset (NovMyLoginName)
  6937.  
  6938.    If the User parameter is not included, MarxMenu will assume the current
  6939.    user.
  6940.  
  6941.    See Also: NovGraceLogins
  6942.  
  6943.    Category: Novell
  6944.  
  6945.    NovGraceLogins (User) : Num   NovGraceLogins (User) : Num   NovGraceLogins (User) : Num
  6946.    Returns the number of grace logins the user has left.
  6947.  
  6948.     Example:
  6949.        Writeln 'You have ' NovGraceLogins (NovMyLoginName) ' left!'
  6950.  
  6951.    If the User parameter is not included, MarxMenu will assume the current
  6952.    user.
  6953.  
  6954.    See Also: NovPasswordExpDate NovGraceLoginReset
  6955.  
  6956.    Category: Novell
  6957.  
  6958.  
  6959.  
  6960.    Computer Tyme MarxMenu Users Manual                     Page 119
  6961.    _______________________________________________________________
  6962.  
  6963.  
  6964.    NovGroupsMembers (Group,Array)   NovGroupsMembers (Group,Array)   NovGroupsMembers (Group,Array)
  6965.    This reads all the members of Group and puts them into an array.
  6966.  
  6967.    Category: Novell, Array
  6968.  
  6969.    NovGroups (Array)   NovGroups (Array)   NovGroups (Array)
  6970.    Fills array with list of all groups.
  6971.  
  6972.    See Also: NovUsersLoggedIn, NovUsers, NovPrintQueues, NovServers
  6973.  
  6974.    Category: Novell
  6975.  
  6976.    NovInGroup (Group) : Boolean   NovInGroup (Group) : Boolean   NovInGroup (Group) : Boolean
  6977.    Returns true if you are in the group.
  6978.  
  6979.     Example:
  6980.       If NovInGroup ('PAYROLL') then Writeln 'Accounting'
  6981.  
  6982.    Category: Novell
  6983.  
  6984.    NovLastLoginDate (User) : Date   NovLastLoginDate (User) : Date   NovLastLoginDate (User) : Date
  6985.    Returns the date the user last logged in.
  6986.  
  6987.     Example:
  6988.        DaysSinceLogin = NovLastLoginDate(UserName) - Today / SecondsInDay
  6989.  
  6990.    If the User parameter is not included, MarxMenu will assume the current
  6991.    user.
  6992.  
  6993.    Category: Novell, Time
  6994.  
  6995.    NovLogin (Name,Password)   NovLogin (Name,Password)   NovLogin (Name,Password)
  6996.    This logs you into a file server. It is different than the Novell's
  6997.    login program in that it doesn't execute any login scripts. It merely
  6998.    gets you in. You can include the preferred server with the name.
  6999.  
  7000.     Example:
  7001.        NovLogin ('MARC','PASSWORD')
  7002.        NovLogin ('TYME/MARC','PASSWORD')
  7003.  
  7004.    NovLogin will automatically attach to the file server for you and
  7005.    preserve all default and preferred server settings.
  7006.  
  7007.    The variable NovResult is set to 0 or 223 if successful. The 223 result
  7008.    indicated a grace login.
  7009.  
  7010.    Note: If you are using Netware 3.0 or 3.1 you will have to go to the
  7011.    server console and type:
  7012.  
  7013.     SET ALLOW UNENCRYPTED PASSWORDS = ON
  7014.  
  7015.  
  7016.  
  7017.    Computer Tyme MarxMenu Users Manual                     Page 120
  7018.    _______________________________________________________________
  7019.  
  7020.  
  7021.    See Also: NovDetach
  7022.  
  7023.    Category: Novell
  7024.  
  7025.    NovLoginName (Connection) : String   NovLoginName (Connection) : String   NovLoginName (Connection) : String
  7026.    This returns the login name of the user at any specified connection.
  7027.    This can also be used to see who else is on the network.
  7028.  
  7029.    See Also: NovFullName
  7030.  
  7031.    Category: Novell
  7032.  
  7033.    NovLogout   NovLogout   NovLogout
  7034.    This logs you off the server. Warning! Make sure that you are running
  7035.    MarxMenu from a local drive and not the server you are logging out of.
  7036.    MarxMenu needs access to overlays within MARXMENU.EXE and a Logout can
  7037.    cut off access. This command automatically runs FixPath.
  7038.  
  7039.    See Also: FixPath, Logoff, LogoffTime
  7040.  
  7041.    Category: Novell, Vines
  7042.  
  7043.    NovMapDrive (Drive,Directory)   NovMapDrive (Drive,Directory)   NovMapDrive (Drive,Directory)
  7044.    This will map a drive letter to a directory like the Novell MAP
  7045.    command does. You may specify volume names and server names.
  7046.  
  7047.     Example:
  7048.       NovMapDrive ('J','TYME2/SYS:PUBLIC\DOS')
  7049.  
  7050.    Mapping a drive to a nul string ('') deletes the drive map.
  7051.  
  7052.    See Also: NovMapRoot
  7053.  
  7054.    Category: Novell
  7055.  
  7056.    NovMapRoot (Drive,Path)   NovMapRoot (Drive,Path)   NovMapRoot (Drive,Path)
  7057.    NovMapRoot works like Novell's MAP ROOT command. It allows you to map a
  7058.    drive letter to a subdirectory and make it look like the root directory
  7059.    of that drive. You may specify volume names and server names.
  7060.  
  7061.     Example:
  7062.        NovMapRoot('P','TYME/SYS:PUBLIC')
  7063.        ; P:\ is the same as the TYME/SYS:PUBLIC directory
  7064.  
  7065.    See Also: NovMapDrive
  7066.  
  7067.    Category: Novell
  7068.  
  7069.  
  7070.  
  7071.    Computer Tyme MarxMenu Users Manual                     Page 121
  7072.    _______________________________________________________________
  7073.  
  7074.  
  7075.    NovMaxConnections : Number   NovMaxConnections : Number   NovMaxConnections : Number
  7076.    Returns the maximum number of connections that your netware will allow.
  7077.  
  7078.    Category: Novell
  7079.  
  7080.    NovMinPasswordLength (User) : Num   NovMinPasswordLength (User) : Num   NovMinPasswordLength (User) : Num
  7081.    Returns the minimum length of the password that Novell will accept for a
  7082.    new password.
  7083.  
  7084.     Example:
  7085.        Writeln NovGraceLoginReset (NovMyLoginName)
  7086.  
  7087.    If the User parameter is not included, MarxMenu will assume the current
  7088.    user.
  7089.  
  7090.    Category: Novell
  7091.  
  7092.    NovMyLoginName : String   NovMyLoginName : String   NovMyLoginName : String
  7093.    This returns the login name of the user.
  7094.  
  7095.    Category: Novell
  7096.  
  7097.    NovMyPassword (Password) : Boolean   NovMyPassword (Password) : Boolean   NovMyPassword (Password) : Boolean
  7098.    Novell won't let you read the password, but it will let you guess and
  7099.    tell you if you're right. This routine returns true if the password
  7100.    passed is the correct password.
  7101.  
  7102.    Category: Novell
  7103.  
  7104.    NovMyPrintQueues (Array)   NovMyPrintQueues (Array)   NovMyPrintQueues (Array)
  7105.    Returns a list of all print queues that the user has access too.
  7106.  
  7107.    See Also: NovPrintQueues
  7108.  
  7109.    Category: Novell, Array
  7110.  
  7111.    NovObjectID (User) : String   NovObjectID (User) : String   NovObjectID (User) : String
  7112.    NovObjectID returns the users novell object identification code. This is
  7113.    the same as the name of the users mail directory.
  7114.  
  7115.    Category: Novell
  7116.  
  7117.  
  7118.  
  7119.    Computer Tyme MarxMenu Users Manual                     Page 122
  7120.    _______________________________________________________________
  7121.  
  7122.  
  7123.    NovObjects (2D Array)   NovObjects (2D Array)   NovObjects (2D Array)
  7124.    NovObjects reads all objects from the bindary returning a 2 dimensional
  7125.    array containing all object names and object types.
  7126.  
  7127.     Example:
  7128.       NovObjects (X)
  7129.       Loop X
  7130.          Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
  7131.       EndLoop
  7132.  
  7133.     Common Object Types:
  7134.       1 - User
  7135.       2 - Group
  7136.       3 - Print Queue
  7137.       4 - File Server
  7138.       5 - Job Server
  7139.       6 - Gateway
  7140.       7 - Print Server
  7141.  
  7142.    See Also: NovScanProperties, NovPropertyValues
  7143.  
  7144.    Category: Novell, Array
  7145.  
  7146.    NovObjectSecurity : Number   NovObjectSecurity : Number   NovObjectSecurity : Number
  7147.    NovObjectSecurity is used when objects are created to determine who can
  7148.    read or write the object. The number is one byte. The upper 4 bits
  7149.    controls who can read the object, the lower 4 bits control who can write
  7150.    to the object.
  7151.  
  7152.      0000 Anyone
  7153.      0001 Logged In
  7154.      0010 Only your Object
  7155.      0011 Supervisor
  7156.      0100 Netware Itself
  7157.  
  7158.    The default is $11 (00010001) which is anyone logged in can read or
  7159.    write to the object.
  7160.  
  7161.    NovObjectSecurity can also read and set the security of an existing
  7162.    object.
  7163.  
  7164.     Example:
  7165.       NovObjectSecurity('MARXMENU',600) = $13
  7166.       Writeln NovObjectSecurity('MARXMENU',600)
  7167.  
  7168.    See Also: NovCreateObject, NovStaticObject, NovPropertySecurity
  7169.  
  7170.    Category: Novell
  7171.  
  7172.  
  7173.  
  7174.    Computer Tyme MarxMenu Users Manual                     Page 123
  7175.    _______________________________________________________________
  7176.  
  7177.  
  7178.    NovOpenSemaphore (Name,Value)   NovOpenSemaphore (Name,Value)   NovOpenSemaphore (Name,Value)
  7179.    This opens semaphore Name and assigns it an initial value. If the
  7180.    semaphore already exists, it does nothing.
  7181.  
  7182.    Category: Novell
  7183.  
  7184.    NovPasswordExpDate (UserName) : Date   NovPasswordExpDate (UserName) : Date   NovPasswordExpDate (UserName) : Date
  7185.    Returns the Novell password expiration date. You must be logged in to be
  7186.    able to read this.
  7187.  
  7188.     Example:
  7189.        DaysToExpire = NovPasswordExpDate(UserName) - Today / SecondsInDay
  7190.  
  7191.    See Also: NovGraceLogins
  7192.  
  7193.    Category: Novell, Time
  7194.  
  7195.    NovPreferredServer : String   NovPreferredServer : String   NovPreferredServer : String
  7196.    Returns the name of the preferred file server. This is set with the
  7197.    NovSetPreferredServer command.
  7198.  
  7199.    Category: Novell
  7200.  
  7201.    NovPrimaryServer : String   NovPrimaryServer : String   NovPrimaryServer : String
  7202.    Returns the name of the primary file server. This is the one you first
  7203.    logged into.
  7204.  
  7205.    Category: Novell
  7206.  
  7207.    NovPrintQueues (Array)   NovPrintQueues (Array)   NovPrintQueues (Array)
  7208.    Fills array with list of all print Queues. The user might not have
  7209.    access rights to all these queues.
  7210.  
  7211.    See Also: NovMyPrintQueues, NovUsersLoggedIn, NovUsers
  7212.    See Also: NovGroups, NovServers
  7213.  
  7214.    Category: Novell, Array, Printer
  7215.  
  7216.  
  7217.  
  7218.    Computer Tyme MarxMenu Users Manual                     Page 124
  7219.    _______________________________________________________________
  7220.  
  7221.  
  7222.    NovPropertySecurity : Number   NovPropertySecurity : Number   NovPropertySecurity : Number
  7223.    NovPropertySecurity is used when properties are created to determine who
  7224.    can read or write the property. The number is one byte. The upper 4 bits
  7225.    controls who can read the property, the lower 4 bits control who can
  7226.    write to the property.
  7227.  
  7228.      0000 Anyone
  7229.      0001 Logged In
  7230.      0010 Only your Object
  7231.      0011 Supervisor
  7232.      0100 Netware Itself
  7233.  
  7234.    The default is $11 (00010001) which is anyone logged in can read or
  7235.    write to the property.
  7236.  
  7237.    NovPropertySecurity can also read and set the security of an existing
  7238.    property.
  7239.  
  7240.     Example:
  7241.       NovPropertySecurity('MARXMENU','USERS',600) = $13
  7242.       Writeln NovPropertySecurity('MARXMENU',USERS',600)
  7243.  
  7244.    See Also: NovCreateProperty, NovObjectSecurity, NovSetProperty
  7245.  
  7246.    Category: Novell
  7247.  
  7248.    NovPropertyValues (Array, Object, Property, Type)   NovPropertyValues (Array, Object, Property, Type)   NovPropertyValues (Array, Object, Property, Type)
  7249.    Reads property values of object into and array. Note: Some property
  7250.    values are not text.
  7251.  
  7252.     Example:       ;shows contents of bindary
  7253.       StandardIO
  7254.  
  7255.       Var Objects, Obj, Prop, Ty, Values
  7256.  
  7257.       Qualifier ObjName ObjType
  7258.  
  7259.       NovObjects (Objects)
  7260.  
  7261.  
  7262.  
  7263.    Computer Tyme MarxMenu Users Manual                     Page 125
  7264.    _______________________________________________________________
  7265.  
  7266.  
  7267.       Loop Objects
  7268.          Obj = Objects[LoopIndex].ObjName
  7269.          Ty = Objects[LoopIndex].ObjType
  7270.          Writeln Obj ' --------- ' Ty
  7271.          NovScanProperties (Prop,Obj,Ty)
  7272.          Loop Prop
  7273.             Writeln '   ' Prop[LoopIndex]
  7274.             NovPropertyValues(Values,Obj,Prop[LoopIndex],Ty)
  7275.             Loop Values
  7276.                Writeln '      ' Values[LoopIndex]
  7277.             EndLoop
  7278.          EndLoop
  7279.       EndLoop
  7280.  
  7281.    See Also: NovObjects, NovScanProperties
  7282.  
  7283.    Category: Novell, Array
  7284.  
  7285.    NovReadGroups (Name,Array)   NovReadGroups (Name,Array)   NovReadGroups (Name,Array)
  7286.    This reads all the groups that Name belongs to and puts them into an
  7287.    array.
  7288.  
  7289.    Category: Novell, Array
  7290.  
  7291.    NovReadSecurityEquals (Name,Array)   NovReadSecurityEquals (Name,Array)   NovReadSecurityEquals (Name,Array)
  7292.    This reads all the security equivalences that Name belongs to and puts
  7293.    them into an array. (This includes groups).
  7294.  
  7295.    Category: Novell, Array
  7296.  
  7297.    NovRemoveUserFromGroup (User,Group)   NovRemoveUserFromGroup (User,Group)   NovRemoveUserFromGroup (User,Group)
  7298.    Removes a user to a group and updates GROUPS_I'M_IN, GROUP_MEMBERS, and
  7299.    SECURITY_EQUALS properties.
  7300.  
  7301.    See Also: NovAddUserToGroup
  7302.  
  7303.    Category: Novell
  7304.  
  7305.    NovRenameObject (OldName, NewName, ObjectType)   NovRenameObject (OldName, NewName, ObjectType)   NovRenameObject (OldName, NewName, ObjectType)
  7306.    Renames an object.
  7307.  
  7308.     Example:
  7309.     NovRenameObject('VICKY','VICKI',1)  ;corrects serious spelling error
  7310.  
  7311.    Category: Novell
  7312.  
  7313.  
  7314.  
  7315.    Computer Tyme MarxMenu Users Manual                     Page 126
  7316.    _______________________________________________________________
  7317.  
  7318.  
  7319.    NovResult : Number   NovResult : Number   NovResult : Number
  7320.    NovResult is a variable like FileResult that returns the success status
  7321.    of the previous Novell system call. A zero generally indicates success.
  7322.  
  7323.    Category: Novell
  7324.  
  7325.    NovScanProperties (Array, Object, ObjectType)   NovScanProperties (Array, Object, ObjectType)   NovScanProperties (Array, Object, ObjectType)
  7326.    NovScanProperties reads the properties (not the values) into an array.
  7327.    You also have to pass the object type.
  7328.  
  7329.     Novell Object Types:
  7330.       1 - User
  7331.       2 - Group
  7332.       3 - Print Queue
  7333.       4 - File Server
  7334.       5 - Job Server
  7335.       6 - Gateway
  7336.       7 - Print Server
  7337.  
  7338.     Example:
  7339.       var Properties
  7340.       NovScanProperties (Properties,NovMyLoginName,1)
  7341.  
  7342.       Loop NumberOfElements(Properties)
  7343.          Writeln(Properties[LoopIndex])
  7344.       EndLoop
  7345.  
  7346.    See Also: NovObjects, NovPropertyValues
  7347.  
  7348.    Category: Novell, Array
  7349.  
  7350.    NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)   NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)   NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)
  7351.    Returns a 2 dimensional array containing the name of the trustee paths
  7352.    assigned to the object and the trustee access rights.
  7353.  
  7354.     Example:
  7355.       var X
  7356.       NovScanTrusteePaths (X,'MARC',1)
  7357.       Loop X
  7358.          Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
  7359.       EndLoop
  7360.  
  7361.    Category: Novell, Array
  7362.  
  7363.  
  7364.  
  7365.    Computer Tyme MarxMenu Users Manual                     Page 127
  7366.    _______________________________________________________________
  7367.  
  7368.  
  7369.    NovSecurityEquals (Security) : Boolean   NovSecurityEquals (Security) : Boolean   NovSecurityEquals (Security) : Boolean
  7370.  
  7371.    Returns True if user has the security equivalent of Security.
  7372.  
  7373.     Example:
  7374.        if NovSecurityEquals ('SUPERVISOR')
  7375.           Execute ('SYSCON')
  7376.        endif
  7377.  
  7378.    Category: Novell
  7379.  
  7380.    NovSemaphoreTimeOut   NovSemaphoreTimeOut   NovSemaphoreTimeOut
  7381.    This variable controls the amount of time (in 1/18 seconds) that
  7382.    MarxMenu will wait for the value of a semaphore to become not negative.
  7383.    The initial value is 50.
  7384.  
  7385.    Category: Novell
  7386.  
  7387.    NovSemaphoreUsers (Name) : Number   NovSemaphoreUsers (Name) : Number   NovSemaphoreUsers (Name) : Number
  7388.    This returns the number of users that have the semaphore open.
  7389.  
  7390.    Category: Novell
  7391.  
  7392.    NovSemaphoreValue (Name) : Number   NovSemaphoreValue (Name) : Number   NovSemaphoreValue (Name) : Number
  7393.    This returns the value of a semaphore.
  7394.  
  7395.    Category: Novell
  7396.  
  7397.    NovServerLogin (On/Off)   NovServerLogin (On/Off)   NovServerLogin (On/Off)
  7398.    Enables or disables logins to file server.
  7399.  
  7400.    Category: Novell
  7401.  
  7402.    NovServers (Array)   NovServers (Array)   NovServers (Array)
  7403.    This command returns a string array of the file servers you are
  7404.    connected to.
  7405.  
  7406.    Category: Novell, Array
  7407.  
  7408.    NovServerTime : Time   NovServerTime : Time   NovServerTime : Time
  7409.    NovServerTime can read or set the date and time of a Novell file server.
  7410.  
  7411.     To read the server time:
  7412.        X = ServerTime
  7413.  
  7414.     To set the server time:
  7415.        ServerTime = X
  7416.  
  7417.    Category: Novell, Time
  7418.  
  7419.  
  7420.  
  7421.    Computer Tyme MarxMenu Users Manual                     Page 128
  7422.    _______________________________________________________________
  7423.  
  7424.  
  7425.    NovSendMessage (Message,Connection)   NovSendMessage (Message,Connection)   NovSendMessage (Message,Connection)
  7426.    Sends a message to the specified connection number just like the novell
  7427.    SEND command.
  7428.  
  7429.     NovResults
  7430.          0 - Successful
  7431.        252 - Buffer Full
  7432.        253 - Invalid Connection Number
  7433.        255 - Blocked (running CastOff)
  7434.  
  7435.    See Also: NovGetMessage, NovBroadcastMode
  7436.  
  7437.    Category: Novell
  7438.  
  7439.    NovSetPreferredServer (Server)   NovSetPreferredServer (Server)   NovSetPreferredServer (Server)
  7440.    Sets the preferred file server. Passing a '' will switch you back to the
  7441.    default or primary file server.
  7442.  
  7443.    See Also: NovSetPrimaryServer
  7444.  
  7445.    Category: Novell
  7446.  
  7447.    NovSetPrimaryServer (Server)   NovSetPrimaryServer (Server)   NovSetPrimaryServer (Server)
  7448.    The primary file server is the one that executes your login scripts. It
  7449.    can also be set using the NovSetPrimaryServer command.
  7450.  
  7451.    See Also: NovSetPreferredServer
  7452.  
  7453.    Category: Novell
  7454.  
  7455.    NovSetProperty (On/Off)   NovSetProperty (On/Off)   NovSetProperty (On/Off)
  7456.    NovSetProperty is a variable that controls if the property to be created
  7457.    is going to be a set property or an item property.
  7458.  
  7459.    A set property contains a list of objects. An item property contains a
  7460.    value up to 128 bytes long. The value can be anything.
  7461.  
  7462.    NovSetProperty can also be used to read if a property is an item or a
  7463.    set.
  7464.  
  7465.     Example:
  7466.     if NovSetProperty (Object,Property,ObjectType)
  7467.        NovPropertyValues(Values,Object,Property,ObjectType)
  7468.        Loop Values
  7469.           Writeln Values[LoopIndex]
  7470.        EndLoop
  7471.     endif
  7472.  
  7473.    See Also: NovPropertySecurity, NovCreateProperty, NovStaticProperty
  7474.  
  7475.    Category: Novell
  7476.  
  7477.  
  7478.  
  7479.    Computer Tyme MarxMenu Users Manual                     Page 129
  7480.    _______________________________________________________________
  7481.  
  7482.  
  7483.    NovSignalSemaphore (Name)   NovSignalSemaphore (Name)   NovSignalSemaphore (Name)
  7484.    This increments the value of a semaphore. It is used to indicate that
  7485.    you are done with a resource and makes it available for the next user.
  7486.  
  7487.    Category: Novell
  7488.  
  7489.    NovStaticObject : Boolean   NovStaticObject : Boolean   NovStaticObject : Boolean
  7490.    This variable controls if objects created will be static or dynamic
  7491.    objects. Dynamic objects are deleted when the file server is rebooted.
  7492.  
  7493.    NovStaticObject can also be used to read if an object is static or not.
  7494.  
  7495.     Example:
  7496.        Writeln NovStaticObject('MARXMENU,600)  ;test for static object
  7497.  
  7498.    See Also: NovCreateObject, NovObjectSecurity
  7499.  
  7500.    Category: Novell
  7501.  
  7502.    NovStaticProperty : Boolean   NovStaticProperty : Boolean   NovStaticProperty : Boolean
  7503.    This variable controls if objects created will be static or dynamic
  7504.    objects. Dynamic objects are deleted when the file server is rebooted.
  7505.  
  7506.    NovStaticProperty can also be used to read if an property is static or
  7507.    not.
  7508.  
  7509.     Example:
  7510.        Writeln NovStaticProperty('MARXMENU,'USERS',600)
  7511.  
  7512.    See Also: NovCreateProperty, NovPropertySecurity
  7513.  
  7514.    Category: Novell
  7515.  
  7516.    NovStationAddress (Connection) : String   NovStationAddress (Connection) : String   NovStationAddress (Connection) : String
  7517.    This returns the stations internetwork address at connection.
  7518.  
  7519.     Example:
  7520.       NovStationAddress (NovConnection)
  7521.          Returns the address of the users workstation.
  7522.  
  7523.       NovStationAddress (1)
  7524.          Returns the address of station 1.
  7525.  
  7526.       254:41 where 254 is the network number and 41 is the node number.
  7527.  
  7528.    The second parameter (Connection) is optional. If it is left out, the
  7529.    current connection is assumed.
  7530.  
  7531.     Example:
  7532.       NovStationAddress ;Returns the address of the users workstation.
  7533.  
  7534.  
  7535.  
  7536.    Computer Tyme MarxMenu Users Manual                     Page 130
  7537.    _______________________________________________________________
  7538.  
  7539.  
  7540.    Category: Novell
  7541.  
  7542.    NovTotalDirSlots (Path) : Number   NovTotalDirSlots (Path) : Number   NovTotalDirSlots (Path) : Number
  7543.    Returns the total number of directory slots for this volume.
  7544.  
  7545.     Example:
  7546.       Writeln NovTotalDirSlots 'SYS:'
  7547.       Writeln NovTotalDirSlots 'F:'
  7548.  
  7549.    See Also: NovFreeDirSlots
  7550.  
  7551.    Category: Novell
  7552.  
  7553.    NovTotalVolumeSpace (Path) : Number   NovTotalVolumeSpace (Path) : Number   NovTotalVolumeSpace (Path) : Number
  7554.    Returns the total file space of the volume in bytes.
  7555.  
  7556.     Example:
  7557.       Writeln NovTotalVolumeSpace 'SYS:'
  7558.       Writeln NovTotalVolumeSpace 'F:'
  7559.  
  7560.    See Also: NovFreeVolumeSpace
  7561.  
  7562.    Category: Novell
  7563.  
  7564.    NovUserInGroup (Name,Group) : Boolean   NovUserInGroup (Name,Group) : Boolean   NovUserInGroup (Name,Group) : Boolean
  7565.    This is used to test if other users are in a group. Returns true is the
  7566.    specified user is in the specified group.
  7567.  
  7568.    Category: Novell
  7569.  
  7570.    NovUsers (Array)   NovUsers (Array)   NovUsers (Array)
  7571.    Fills array with list of all users.
  7572.  
  7573.    See Also: NovUsersLoggedIn, NovGroups, NovPrintQueues, NovServers
  7574.  
  7575.    Category: Novell, Array
  7576.  
  7577.    NovUsersLoggedIn (Array)   NovUsersLoggedIn (Array)   NovUsersLoggedIn (Array)
  7578.    Fills array with list of all users that are currently logged in.
  7579.  
  7580.    See Also: NovUsers, NovGroups, NovPrintQueues, NovServers
  7581.  
  7582.    Category: Novell, Array
  7583.  
  7584.    NovVersionNumber : Number   NovVersionNumber : Number   NovVersionNumber : Number
  7585.    Returns the novell netware version number.
  7586.  
  7587.    Category: Novell
  7588.  
  7589.  
  7590.  
  7591.    Computer Tyme MarxMenu Users Manual                     Page 131
  7592.    _______________________________________________________________
  7593.  
  7594.  
  7595.    NovVolumeNumber (Directory) : Number   NovVolumeNumber (Directory) : Number   NovVolumeNumber (Directory) : Number
  7596.    Returns the Novell volume number of a directory.
  7597.  
  7598.     Example:
  7599.       Writeln NovVolumeNumber ('F:')
  7600.  
  7601.    Category: Novell
  7602.  
  7603.    NovVolumes (Array)   NovVolumes (Array)   NovVolumes (Array)
  7604.    Reads volumes on the default server into an array.
  7605.  
  7606.     Example:
  7607.       var X
  7608.       NovVolumes(X)
  7609.       Loop NumberOfElements(X)
  7610.          Writeln X[LoopIndex]
  7611.       EndLoop
  7612.  
  7613.    Category: Novell, Array
  7614.  
  7615.    NovWaitOnSemaphore (Name) : Boolean   NovWaitOnSemaphore (Name) : Boolean   NovWaitOnSemaphore (Name) : Boolean
  7616.    This decrements the value of a semaphore and if the value is zero or
  7617.    more, returns true. If the value of the semaphore is negative, it
  7618.    returns false. This is used to indicate that you are out of whatever you
  7619.    are testing for.
  7620.  
  7621.    Category: Novell
  7622.  
  7623.    NumberOfElememts (array) : Number   NumberOfElememts (array) : Number   NumberOfElememts (array) : Number
  7624.    This function returns the number of elements in the array. If the
  7625.    variable is not an array, 0 is returned.
  7626.  
  7627.    Category: Array
  7628.  
  7629.    Now : Time   Now : Time   Now : Time
  7630.    Returns the current moment or sets the system clock.
  7631.  
  7632.     Read the current moment:
  7633.        X = Now
  7634.     Set the system clock:
  7635.        Now = X
  7636.  
  7637.    See Also: Today, Tomorrow
  7638.  
  7639.    Category: Time
  7640.  
  7641.  
  7642.  
  7643.    Computer Tyme MarxMenu Users Manual                     Page 132
  7644.    _______________________________________________________________
  7645.  
  7646.  
  7647.    NumLock : Boolean   NumLock : Boolean   NumLock : Boolean
  7648.    Returns true if Num Lock is on. This command can also set the Num Lock
  7649.    on and off.
  7650.  
  7651.     Example:
  7652.       if NumLock then Write 'NumLock is On'
  7653.  
  7654.       NumLock On  ;Turns NumLock On
  7655.       NumLock Off ;Turns NumLock Off
  7656.  
  7657.       NumLock (by itself) turns NumLock On.
  7658.  
  7659.    See Also: CapsLock, ScrollLock
  7660.  
  7661.    Category: System
  7662.  
  7663.    Offset (String) : Number   Offset (String) : Number   Offset (String) : Number
  7664.    Returns the memory offset where string is located.
  7665.  
  7666.    See Also: Segment
  7667.  
  7668.    Category: Memory
  7669.  
  7670.    OnKey (char)   OnKey (char)   OnKey (char)
  7671.    When char is selected, the line(s) following are executed up to the next
  7672.    OnKey or end of file. This means that they are written to a BATCH file.
  7673.  
  7674.     Example:
  7675.       Onkey 'W'
  7676.       cd\wordstar
  7677.       ws
  7678.       cd\menu
  7679.  
  7680.    In the above example if 'W' is selected, MarxMenu will create a
  7681.    temporary batch file containing all the lines under the OnKey command.
  7682.    All the lines under an OnKey are written literally to the batch file
  7683.    with few exceptions. All leading and trailing blanks are stripped.
  7684.    String variables are evaluated and their value passed if the name of the
  7685.    string variable name starts with a '%'.
  7686.  
  7687.    If a line begins with a '|' (vertical bar), the line is interpreted
  7688.    rather than written to a batch file. If a '^Label' is used under an
  7689.    OnKey, a jump is made to the 'Label' and interpretation is resumed. This
  7690.    is commonly used to jump to a submenu.
  7691.  
  7692.    Any OnKey statement that causes a batch file to be written to will cause
  7693.    the menu to exit. MarxMenu normally will exit with ErrorLevel 0 unless
  7694.    an ExitCode is set.
  7695.  
  7696.  
  7697.  
  7698.    Computer Tyme MarxMenu Users Manual                     Page 133
  7699.    _______________________________________________________________
  7700.  
  7701.  
  7702.    The first blank line under an OnKey ends what is written to the batch
  7703.    file. One common mistake is that when MarxMenu commands are intermixed
  7704.    with batch file statements that all the MarxMenu commands are executed
  7705.    first. This is because the batch statements are written to a batch file
  7706.    and executed when MarxMenu exist.
  7707.  
  7708.     Example:
  7709.       OnKey 'W'
  7710.         |ChDir('c:\wordstar')
  7711.         WS
  7712.         |ChDir('c:\menu')
  7713.  
  7714.    The above example won't work. Here's why. MarxMenu changes to the
  7715.    c:\wordstar directory. Then it stores WS in a batch file buffer. Then is
  7716.    changes to the c:\menu directory. Then MarxMenu writes the batch file
  7717.    and exits and you are in the wrong directory.
  7718.  
  7719.    Here is an example of using conditional statements under an OnKey
  7720.    command:
  7721.  
  7722.     Example:
  7723.       OnKey 'S'
  7724.         |if DisplayType = 'HERCMONO'
  7725.            |ChDir('C:\MONSMART')
  7726.            SMART
  7727.         |else
  7728.            |ChDir('C:\COLSMART')
  7729.            SMART
  7730.         |endif
  7731.  
  7732.    In the above example MarxMenu tests to see if a color compatible screen
  7733.    is available. If so it runs SMART out of the color directory. Otherwise
  7734.    it runs SMART out of the mono directory. Note that all commands that
  7735.    MarxMenu sees start with the vertical bar character.
  7736.  
  7737.    Sometimes you want to execute a command where the command is created by
  7738.    a complex set of rules. The BAT command is useful here.
  7739.  
  7740.     Example:
  7741.       OnKey 'P'
  7742.         |Bat 'CAPTURE Q=' + Queue + ' C=1 NB NFF TI=5 Local=' + PrnPort
  7743.  
  7744.    In this example the |Bat command allows to more specific control over
  7745.    what is sent to the batch file for execution.
  7746.  
  7747.    See Also: MxCmd, Bat, UseArrows, OnScreenOnly
  7748.  
  7749.    Category: Conditional
  7750.  
  7751.  
  7752.  
  7753.    Computer Tyme MarxMenu Users Manual                     Page 134
  7754.    _______________________________________________________________
  7755.  
  7756.  
  7757.    OnScreenOnly (On/Off)   OnScreenOnly (On/Off)   OnScreenOnly (On/Off)
  7758.    This allows you to restrict selections to only what is actually on the
  7759.    screen. Hidden OnKey commands will not execute if this is set on. This
  7760.    allows you to limit user selection to the choices on the screen.
  7761.  
  7762.    See Also: OnKey
  7763.  
  7764.    Category: Conditional
  7765.  
  7766.    OpenPrinter   OpenPrinter   OpenPrinter
  7767.    This command opens the printer device. It is not necessary to use this
  7768.    command in that it is done automatically whenever you print. But, if you
  7769.    are running under a multitasking shell like Windows or DesqView, it will
  7770.    reserve the printer for your task.
  7771.  
  7772.    If the printer is locked, or if you have specified a file name that
  7773.    can't be created, the variable FileResult will contain the DOS error
  7774.    code (usually 5 for access denied). A FileResult of 0 indicates success.
  7775.  
  7776.    See Also: ClosePrinter, FileResult, PrinterName
  7777.  
  7778.    Category: Printer
  7779.  
  7780.    OptionSwitch (String1,String2) : Boolean   OptionSwitch (String1,String2) : Boolean   OptionSwitch (String1,String2) : Boolean
  7781.    This command tests if String1 contains the option switch String2. If it
  7782.    does, it will remove the switch from String1.
  7783.  
  7784.     Example:
  7785.       String1 = 'Test /A/B/C'
  7786.       HasB = OptionSwitch(String1,'B')
  7787.  
  7788.     HasB will be true.
  7789.     String1 will contain 'Test /A/C'
  7790.  
  7791.    Category: String
  7792.  
  7793.    Or : Operator   Or : Operator   Or : Operator
  7794.    Returns logical Or if operators are boolean; or bitwise Or if operators
  7795.    are numeric.
  7796.  
  7797.     Example:
  7798.       if (B < 9) or (C > 5) then .....  ;boolean or
  7799.       X or $0F                          ;bitwise or
  7800.  
  7801.    Category: Math, Boolean
  7802.  
  7803.  
  7804.  
  7805.    Computer Tyme MarxMenu Users Manual                     Page 135
  7806.    _______________________________________________________________
  7807.  
  7808.  
  7809.    Ord (Char) : Number   Ord (Char) : Number   Ord (Char) : Number
  7810.    Returns the numeric value of an ascii character.
  7811.  
  7812.     Example:
  7813.       Ord('A')            ;returns 65
  7814.       Char(Ord('A') + 1)  ;returns 'C'
  7815.  
  7816.    See Also: Char
  7817.  
  7818.    Category: String
  7819.  
  7820.    OverKey : String   OverKey : String   OverKey : String
  7821.    When using UseArrows, OverKey returns the character that selects the
  7822.    item that the inverse bar is over.
  7823.  
  7824.    This can be used with IdelProgram to display context sensitive help as
  7825.    you move the inverse bar over different selections.
  7826.  
  7827.    See Also: IdleProgram
  7828.  
  7829.    Category: String
  7830.  
  7831.    OverLay (MenuName)   OverLay (MenuName)   OverLay (MenuName)
  7832.    Overlay loads another menu as if that menu were a procedure of the
  7833.    current menu. After the overlaid menu exits, control is returned to the
  7834.    calling menu at the next line after the overlay command.
  7835.  
  7836.    Like the Chain command, Overlay is very fast and doesn't require
  7837.    MarxMenu to be reloaded.
  7838.  
  7839.     Example:
  7840.       Overlay 'SUBMENU'
  7841.  
  7842.    When using overlays, all variables declared as shared are accessable to
  7843.    the main program and all overlays. The shared variables have to be the
  7844.    same for all overlays.
  7845.  
  7846.    See Also: Shared, Chain
  7847.  
  7848.    Category: Execution
  7849.  
  7850.    ParallelPorts : Number   ParallelPorts : Number   ParallelPorts : Number
  7851.    Returns number of parallel ports.
  7852.  
  7853.    Category: System
  7854.  
  7855.  
  7856.  
  7857.    Computer Tyme MarxMenu Users Manual                     Page 136
  7858.    _______________________________________________________________
  7859.  
  7860.  
  7861.    ParamStr (Num) : String   ParamStr (Num) : String   ParamStr (Num) : String
  7862.    Returns the DOS parameter string from the command line. The 0 parameter
  7863.    is MARXMENU.EXE. The 1 parameter is the name of the menu file you are
  7864.    using. This is like the %1 %2 %3 ... in batch file parameters.
  7865.  
  7866.    Category: String
  7867.  
  7868.    ParentEnvironment   ParentEnvironment   ParentEnvironment
  7869.    ParentEnvironment selects the parent environment for use with
  7870.    environment access commands.
  7871.  
  7872.    See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
  7873.    See Also: CurrentEnvironment MasterEnvironment
  7874.  
  7875.    Category: Environment
  7876.  
  7877.    Password (Pswd,column,row)   Password (Pswd,column,row)   Password (Pswd,column,row)
  7878.    This command opens up a password box at row and column. The user must
  7879.    type the password correctly before the command will execute.
  7880.  
  7881.     Example:
  7882.       OnKey 'X'
  7883.          |PassWord('shell',4,3)
  7884.          COMMAND.COM
  7885.  
  7886.    The password is case sensitive if the password in the source code is
  7887.    lower case. But if the password in the source code is in uppercase then
  7888.    the password is not case sensitive.
  7889.  
  7890.     Example:
  7891.        Password 'CRITTER' 4 3    ;will accept critter or CRITTER
  7892.        Password 'CriTTeR' 4 3    ;will only accept CriTTeR
  7893.  
  7894.    Category: Conditional
  7895.  
  7896.    Path : String   Path : String   Path : String
  7897.    Returns the current path.
  7898.  
  7899.     Example:
  7900.       Writeln Path     ;returns 'C:\MARX'
  7901.  
  7902.    Category: String
  7903.  
  7904.  
  7905.  
  7906.    Computer Tyme MarxMenu Users Manual                     Page 137
  7907.    _______________________________________________________________
  7908.  
  7909.  
  7910.    PathPart (String) : String   PathPart (String) : String   PathPart (String) : String
  7911.    Returns the path part of a file name.
  7912.  
  7913.     Example:
  7914.       PathPart ('C:\MARX\MARXMENU.EXE') ;returns C:\MARX
  7915.  
  7916.    See Also: Extension, NamePart, FilePart
  7917.  
  7918.    Category: String
  7919.  
  7920.    PauseAfterExecute (On/Off)   PauseAfterExecute (On/Off)   PauseAfterExecute (On/Off)
  7921.    If on, this command causes the message "Press any key to return to
  7922.    MarxMenu..." to appear after an execute command is executed.
  7923.  
  7924.    See Also: Execute
  7925.  
  7926.    Category: Execution
  7927.  
  7928.    Pi : Real   Pi : Real   Pi : Real
  7929.    Returns the value of Pi to 18 digits.
  7930.  
  7931.    Category: Math, Float
  7932.  
  7933.    PickFile (FileSpec,column,row,height) : String   PickFile (FileSpec,column,row,height) : String   PickFile (FileSpec,column,row,height) : String
  7934.    Allows you to display a directory of files on the screen from a menu.
  7935.    Normally used to display a list of files for the user to choose from.
  7936.    Could be used in a command to load a word processor or database. Allows
  7937.    selection of the file to be loaded by the word processor or database
  7938.    program. The filename can be passed to a percent variable placed in the
  7939.    batch file executing the application. See example files on MarxMenu
  7940.    distribution disk.
  7941.  
  7942.     Example: %FileName = PickFile('C:\WORDSTAR\*.DOC',3,4,17)
  7943.  
  7944.    Notice: The use of a variable with a name that starts with a '%' allows
  7945.    the choice to be passed to a batch file for execution.
  7946.  
  7947.    The three numbers represent the column and row of the upper left corner
  7948.    of the box and the height of the box. All DrawBox commands can be used
  7949.    here to control the looks of the PickFile window. This includes the
  7950.    BoxHeader command.
  7951.  
  7952.    Category: String
  7953.  
  7954.  
  7955.  
  7956.    Computer Tyme MarxMenu Users Manual                     Page 138
  7957.    _______________________________________________________________
  7958.  
  7959.  
  7960.    PickMany(SourceArray,DestinationArray)   PickMany(SourceArray,DestinationArray)   PickMany(SourceArray,DestinationArray)
  7961.    PickMany displays a string array in the current window and allows you to
  7962.    choose as many lines as you want. The chosen lines go into
  7963.    DestinationArray.
  7964.  
  7965.    When the window appears, the space bar toggles the marked status of the
  7966.    line. The right arrow sets the marked status and the left arrow resets
  7967.    the marked status. Ctrl-Right-Arrow marks all lines, Ctrl-Left-Arrow
  7968.    unmarks all lines. The return key accepts the selection and exits. The
  7969.    ESC key aborts.
  7970.  
  7971.    If using a mouse, the left button toggles the mark on the current line.
  7972.    The right button accepts and exits.
  7973.  
  7974.    If no selections are made by marking selections then pressing Return on
  7975.    and entry selects the item the cursor bar is over. If ESC is pressed,
  7976.    the DestinationArray is left unchanged. You can test LastKey to see what
  7977.    was pressed.
  7978.  
  7979.    See Also: PickManyPositions
  7980.  
  7981.    Category: String, Array
  7982.  
  7983.    PickManyPositions (Array)   PickManyPositions (Array)   PickManyPositions (Array)
  7984.    After running PickMany and array PickManyPositions is created the has
  7985.    the position numbers in the original array that were chosen.
  7986.  
  7987.    See Also: PickMany
  7988.  
  7989.    Category: String, Array
  7990.  
  7991.    PickOne (Array) : String   PickOne (Array) : String   PickOne (Array) : String
  7992.    This command displays an array in the current window and lets you pick a
  7993.    line and returns the chosen line.
  7994.  
  7995.    Category: String, Array
  7996.  
  7997.    PickPosition : Number   PickPosition : Number   PickPosition : Number
  7998.    The variable PickPosition works with the PickOne command. PickPosition
  7999.    returns the number of which element in the array was picked.
  8000.  
  8001.    See Also: PickOne
  8002.  
  8003.    Category: String, Array
  8004.  
  8005.  
  8006.  
  8007.    Computer Tyme MarxMenu Users Manual                     Page 139
  8008.    _______________________________________________________________
  8009.  
  8010.  
  8011.    Port (number) : Number   Port (number) : Number   Port (number) : Number
  8012.    Returns the value at the port or writes a number to a port.
  8013.  
  8014.     Example:
  8015.       X = Port(20)   ;Reads port 20 into X
  8016.       Port(20) = X   ;Writes X to Port 20
  8017.  
  8018.    Category: Memory
  8019.  
  8020.    Pos (substring,string) : Number   Pos (substring,string) : Number   Pos (substring,string) : Number
  8021.    Finds position of substring in string. If substring isn't found, Pos
  8022.    returns 0.
  8023.  
  8024.     Example:
  8025.        pos('CD','ABCDE') returns 2
  8026.  
  8027.    Category: String
  8028.  
  8029.    PosInList (String,Array) : Number   PosInList (String,Array) : Number   PosInList (String,Array) : Number
  8030.    Scans a string array looking for a match on string and returns the array
  8031.    index of the first matched string if found or a zero if not found.
  8032.  
  8033.     Example:
  8034.        X[1] = 'JOE'
  8035.        X[2] = 'KEVIN'
  8036.        X[3] = 'MARC'
  8037.        Writeln PosInList('KEVIN',X)   ;returns 2
  8038.  
  8039.    See Also: PosInSortedList
  8040.  
  8041.    Category: Array
  8042.  
  8043.    PosInSortedList (String,Array) : Number   PosInSortedList (String,Array) : Number   PosInSortedList (String,Array) : Number
  8044.    Scans a string array looking for a match on string in a sorted array and
  8045.    returns the array index of the first matched string if found or a zero
  8046.    if not found. The array must be in sorted order. A binary search is used
  8047.    to make this command very fast.
  8048.  
  8049.     Example:
  8050.        X[1] = 'JOE'
  8051.        X[2] = 'KEVIN'
  8052.        X[3] = 'MARC'
  8053.        SortArray (X)
  8054.        Writeln PosInList('KEVIN',X)   ;returns 2
  8055.  
  8056.    See Also: PosInList
  8057.  
  8058.    Category: Array
  8059.  
  8060.  
  8061.  
  8062.    Computer Tyme MarxMenu Users Manual                     Page 140
  8063.    _______________________________________________________________
  8064.  
  8065.  
  8066.    Power (Real,Real) : Real   Power (Real,Real) : Real   Power (Real,Real) : Real
  8067.    Raises a real to a given power.
  8068.  
  8069.     Example: Power(3,4)  ;returns 81.0
  8070.  
  8071.    Category: Math, Float
  8072.  
  8073.    Pred (number) : Number   Pred (number) : Number   Pred (number) : Number
  8074.    Returns number minus 1.
  8075.  
  8076.     Example:
  8077.       Pred(5)  ;returns 4
  8078.  
  8079.    See Also: Succ
  8080.  
  8081.    Category: Math
  8082.  
  8083.    Print (string)   Print (string)   Print (string)
  8084.    Prints string to the printer with no CR or LF. If there is an error
  8085.    printing, the error is returned in FileResult.
  8086.  
  8087.    Category: Printer
  8088.  
  8089.    PrinterName (string)   PrinterName (string)   PrinterName (string)
  8090.    Sets the file name for the printer to use. The default name is PRN.
  8091.    Other common printer names include: LPT1, LPT2, LPT3, and AUX. You can
  8092.    also use filenames to direct printer output to a file.
  8093.  
  8094.    See Also: ClosePrinter
  8095.  
  8096.    Category: Printer
  8097.  
  8098.    Println (String)   Println (String)   Println (String)
  8099.    Prints string to the printer with CR and LF.
  8100.  
  8101.    See Also: Print
  8102.  
  8103.    Category: Printer
  8104.  
  8105.    PrintScreen (On/Off)   PrintScreen (On/Off)   PrintScreen (On/Off)
  8106.    Turns the print screen function on and off. Turning the print screen off
  8107.    disables the print screen key. This can be used to prevent a computer
  8108.    from locking up when the user hits the Print Screen key with no printer
  8109.    attached.
  8110.  
  8111.    Category: Printer
  8112.  
  8113.  
  8114.  
  8115.    Computer Tyme MarxMenu Users Manual                     Page 141
  8116.    _______________________________________________________________
  8117.  
  8118.  
  8119.    Procedure (name)   Procedure (name)   Procedure (name)
  8120.    This word begins the definition of a newly named procedure. A procedure
  8121.    is like a subroutine. Once the procedure is defined, all you have to do
  8122.    to call the procedure is use its name. The procedure definition is
  8123.    terminated by the command EndProc.
  8124.  
  8125.     Example:
  8126.  
  8127.     Procedure SelectFile
  8128.       BoxHeaderColor ForeColor BackColor
  8129.       BoxBorderColor Cyan Mag
  8130.       BoxInsideColor Yellow Mag
  8131.       InverseColor Yellow Red
  8132.       Return PickFile (FileType,4,5,17)
  8133.     EndProc
  8134.  
  8135.    Whenever we use the word SelectFile in the menu, all the lines of the
  8136.    procedure SelectFile will execute.
  8137.  
  8138.    Parameters can be passed to procedures. When a parameter is passed it is
  8139.    normally bassed by value. This mean that a copy of the original is
  8140.    passed. Whatever you do to the copy doesn't affect the original value.
  8141.  
  8142.     Example:
  8143.     var A
  8144.     Procedure Square (X)
  8145.        X = X * X
  8146.        Writeln X
  8147.     EndProc
  8148.  
  8149.     A = 6
  8150.     Square (A)   ;prints 36
  8151.     Writeln A    ;prints 6
  8152.  
  8153.    In the above example Square (A) will write 36 but Writeln A will write
  8154.    6. The reason is that Square passes a copy of A to X but the value of X
  8155.    is not returned to A. If you want the original A to be affected you
  8156.    would use the Loc command.
  8157.  
  8158.     A = 6
  8159.     Square (Loc A) ;prints 36
  8160.     Writeln A      ;prints 36
  8161.  
  8162.    In this example we pas Loc A to the Square procedure. Thus, instead of X
  8163.    being set to 6, X is set to point to A. As a pointer, any operation
  8164.    performed on X is performed on A instead.
  8165.  
  8166.    You can also return parameters from procedures using the Return command.
  8167.  
  8168.  
  8169.  
  8170.    Computer Tyme MarxMenu Users Manual                     Page 142
  8171.    _______________________________________________________________
  8172.  
  8173.  
  8174.     Example:
  8175.       Procedure Cube (X)
  8176.          Return X * X * X
  8177.       EndProc
  8178.  
  8179.       Writeln Cube(3)    ;returns 27
  8180.  
  8181.    In MarxMenu you can return any number of parameters as long as the
  8182.    calling procedure is expecting the same number of parameters.
  8183.  
  8184.     Example:
  8185.       Procedure CenterOfScreen
  8186.          Return (ScreenWidth / 2) (ScreenHeight / 2)
  8187.       EndProc
  8188.  
  8189.       GotoXY(CenterOfScreen)
  8190.  
  8191.    In the above example, GotoXY expects two parameters. CenterOfScreen
  8192.    returns two parameters so MarxMenu is happy with it.
  8193.  
  8194.    See Also: EndProc, Return, Loc
  8195.  
  8196.    Category: Misc
  8197.  
  8198.    PullMenu (on/off)   PullMenu (on/off)   PullMenu (on/off)
  8199.    Controls the behavior of the left and right arrow keys when using pull
  8200.    down menus. Default is Off. See PULL.MNU for example.
  8201.  
  8202.    Category: Display
  8203.  
  8204.    Qualifier   Qualifier   Qualifier
  8205.    Used to create qualifiers which are named elements of an array.
  8206.  
  8207.     Example:
  8208.       Var Presidents
  8209.       Qualifier FirstName, LastName
  8210.  
  8211.       Presidents[1].FirstName = 'George'
  8212.       Presidents[1].LastName = 'Washington'
  8213.  
  8214.    See Also: Var, Constant, Shared
  8215.  
  8216.    Category: Variable
  8217.  
  8218.  
  8219.  
  8220.    Computer Tyme MarxMenu Users Manual                     Page 143
  8221.    _______________________________________________________________
  8222.  
  8223.  
  8224.    Random : Number   Random : Number   Random : Number
  8225.    The Random command returns random numbers between 0 and +2,147,483,647.
  8226.    (2^31). The algorithm has been checked for good uniformity and takes
  8227.    advantage of re-seeding itself from random events like the timer
  8228.    interrupt and keyboard input.
  8229.  
  8230.    To get a random number in a specific range, use the Mod command.
  8231.  
  8232.     Example:
  8233.       Write 'Pick a Number from 1 to 10 '
  8234.       Writeln (Random mod 10 + 1)
  8235.  
  8236.    Category: Math
  8237.  
  8238.    ReadAscTextFile (FileName,2D Array)   ReadAscTextFile (FileName,2D Array)   ReadAscTextFile (FileName,2D Array)
  8239.    ReadAscTextFile reads a standard comma delimited text file into a two
  8240.    dimensional array. The lines of the file must be limited to 255
  8241.    characters and the number of lines must be less than 13100. It also has
  8242.    to fit in memory.
  8243.  
  8244.    All text in quotes is converted to strings. Numbers not in quotes are
  8245.    translated as numbers unless there is a '.' in which case they are
  8246.    translated as floating point numbers.
  8247.  
  8248.    Category: File, Array
  8249.  
  8250.    ReadDirectory (Path,Array)   ReadDirectory (Path,Array)   ReadDirectory (Path,Array)
  8251.    Reads a directory into and array. This command is controlled be several
  8252.    variables that control its behavior.
  8253.  
  8254.    If WholeFileNames is set to true, the names that are returned contain
  8255.    the whole path. If HiddenAndSystem is set to True, then Hidden and
  8256.    System files are also read. If IncludeDirectories is set to true, then
  8257.    directories are also read.
  8258.  
  8259.    If DirectoriesOnly is set to true, then only directory names are read.
  8260.  
  8261.     Example:
  8262.       Var X
  8263.       WholeFileNames Off
  8264.       ReadDirectory('*.MNU',X)
  8265.       Loop X
  8266.          Execute ('COPY ' + X[LoopIndex] + ' A:')
  8267.       EndLoop
  8268.  
  8269.    See Also: WholeFileNames, HiddenAndSystem, IncludeDirectories
  8270.    See Also: DirectoriesOnly
  8271.  
  8272.    Category: Array, File
  8273.  
  8274.  
  8275.  
  8276.    Computer Tyme MarxMenu Users Manual                     Page 144
  8277.    _______________________________________________________________
  8278.  
  8279.  
  8280.    ReadEnv (String) : String   ReadEnv (String) : String   ReadEnv (String) : String
  8281.    Returns the environment string specified.
  8282.  
  8283.     Example: PathString = ReadEnv('PATH')
  8284.  
  8285.    See Also: SetEnv ReadEnvironment ShellEnvironment
  8286.    See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
  8287.  
  8288.    Category: Environment
  8289.  
  8290.    ReadEnvironment (Array)   ReadEnvironment (Array)   ReadEnvironment (Array)
  8291.    Reads all environment variables into an array. LongestLine is set to the
  8292.    length of the longest environment variable.
  8293.  
  8294.     Example:
  8295.       Var Env
  8296.       ReadEnvironment (Env)
  8297.       Writeln 'Your current environment variables are:'
  8298.       Loop Env
  8299.          Writeln Env[LoopIndex]
  8300.       EndLoop
  8301.       Writeln
  8302.       Writeln('Your Environment Size is :',Str(EnvSize))
  8303.       Writeln('You are using            :',Str(EnvSize-EnvFree),' bytes.')
  8304.       Writeln('You have                 :,'Str(EnvFree),' bytes free.')
  8305.  
  8306.    See Also: SetEnv ReadEnv ShellEnvironment
  8307.    See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
  8308.  
  8309.    Category: Environment, Array
  8310.  
  8311.    ReadFileBlock (Name,Offset,Size,Segment)   ReadFileBlock (Name,Offset,Size,Segment)   ReadFileBlock (Name,Offset,Size,Segment)
  8312.    ReadFileBlock reads disk file Name starting at byte Offset for Size
  8313.    bytes into memory buffer Segment. It is intended to read any kind of
  8314.    file.
  8315.  
  8316.    The maximum value for Size is 65504. The segment must be as large as the
  8317.    number of bytes you are reading. The following example will copy a small
  8318.    file.
  8319.  
  8320.     Example:
  8321.       Var RamBlock Size
  8322.       Size = FileSize 'MARXREAD.ME'
  8323.       RamBlock = GetMem(Size)
  8324.       ReadFileBlock('MARXREAD.ME' 0 Size RamBlock)
  8325.       WriteFileBlock('COPYREAD.ME' 0 Size RamBlock)
  8326.       FreeMem(RamBlock)
  8327.  
  8328.    See Also: WriteFileBlock, GetMem, FreeMem
  8329.  
  8330.    Category: File, Memory
  8331.  
  8332.  
  8333.  
  8334.    Computer Tyme MarxMenu Users Manual                     Page 145
  8335.    _______________________________________________________________
  8336.  
  8337.  
  8338.    ReadKey : String   ReadKey : String   ReadKey : String
  8339.    Returns the character that is input from the keyboard. If UseArrows is
  8340.    on then the inverse bar will appear in the current window for selecting
  8341.    a choice.
  8342.  
  8343.     Example:
  8344.       Var Key
  8345.  
  8346.       Repeat
  8347.         Writeln( 'Press the <ESC> key to exit this program.' )
  8348.         Key = ReadKey
  8349.       Until Key = Esc
  8350.  
  8351.    See Also: UseArrows, UpperCaseOnly
  8352.  
  8353.    Category: Keyboard
  8354.  
  8355.    Readln : String   Readln : String   Readln : String
  8356.    Reads a string from the keyboard.
  8357.  
  8358.     Example:
  8359.       Customer.Name   = Readln
  8360.       Customer.Number = Value (Readln) ;Converts to an numerical value
  8361.       Customer.State  = UpperCase (ReadLn)
  8362.  
  8363.    See Also: InputString, UpperCaseOnly, InsertMode
  8364.  
  8365.    Category: Keyboard, String
  8366.  
  8367.    ReadTextFile (FileName,Array)   ReadTextFile (FileName,Array)   ReadTextFile (FileName,Array)
  8368.    This command reads a text file into a string array. It also sets the
  8369.    variable LongestLine to the length of the longest line in the file.
  8370.  
  8371.     Example:
  8372.       Var Docs
  8373.  
  8374.       ReadTextFile('MARXMENU.DOC',Docs)
  8375.         ;After the read, Docs[1] becomes the first line of the file.
  8376.         ;Docs[NumberOfElements(Docs)] becomes the last line.
  8377.       Loop NumberOfElements(Docs)
  8378.           ; Convert each line to its uppercase equivalent
  8379.         Docs[LoopIndex] = UpperCase Docs[LoopIndex]
  8380.       EndLoop
  8381.         ;Save the newly formatted array
  8382.       WriteTextFile ('NEWMM.DOC',Docs)
  8383.  
  8384.    Do not use FileOpen with ReadTextFile.
  8385.  
  8386.  
  8387.  
  8388.    Computer Tyme MarxMenu Users Manual                     Page 146
  8389.    _______________________________________________________________
  8390.  
  8391.  
  8392.    The power of the ReadTextFile and WriteTextFile have expanded. You can
  8393.    now load and save arrays of any variable types, multidimensional arrays,
  8394.    and mixed array types. This includes strings, numbers, and booleans.
  8395.    File variables are also stored. When a file variable is stored and
  8396.    reloaded the FileAssign command is not necessary.
  8397.  
  8398.    Category: File, Array
  8399.  
  8400.    Real (Integer) : Real   Real (Integer) : Real   Real (Integer) : Real
  8401.    Returns the real equivalent of an integer.
  8402.  
  8403.    Category: Math, Float
  8404.  
  8405.    Reboot   Reboot   Reboot
  8406.    Causes the computer to do a warm reboot.
  8407.  
  8408.    See Also: ColdBoot
  8409.  
  8410.    Category: Execution
  8411.  
  8412.    ReleaseDate : String   ReleaseDate : String   ReleaseDate : String
  8413.    Returns the MarxMenu Release Date.
  8414.  
  8415.    Category: String
  8416.  
  8417.    Repeat   Repeat   Repeat
  8418.    Used for program control. Usage:
  8419.  
  8420.     REPEAT
  8421.        (statement)
  8422.        (statement)
  8423.     UNTIL (condition)
  8424.  
  8425.     Example:
  8426.       Var Key
  8427.  
  8428.       Repeat
  8429.         Key = ReadKey
  8430.         If Key = 'A'
  8431.           Bat( 'DOLIST.EXE' )
  8432.           ExitMenu
  8433.         EndIf
  8434.         If Key = F1 Then Help
  8435.       Until Key = Esc
  8436.  
  8437.    Category: Conditional
  8438.  
  8439.  
  8440.  
  8441.    Computer Tyme MarxMenu Users Manual                     Page 147
  8442.    _______________________________________________________________
  8443.  
  8444.  
  8445.    ResizeWindow (Horizontal Vertical)   ResizeWindow (Horizontal Vertical)   ResizeWindow (Horizontal Vertical)
  8446.    Changes the size of the top window. The horizontal and vertical numbers
  8447.    are added to the current size. Use negative numbers to shrink the
  8448.    window. The top left corner stays in the same place.
  8449.  
  8450.     Example:
  8451.       DrawBox 15 5 30 15
  8452.       ResizeWindow 15 5
  8453.  
  8454.    See Also: MoveWindow
  8455.  
  8456.    Category: Display
  8457.  
  8458.    Return (param,param,...)   Return (param,param,...)   Return (param,param,...)
  8459.    Exits a procedure and optionally returns parameters to the calling
  8460.    procedure. It can return as many parameters as you want as long as the
  8461.    calling program uses the same number of parameters. Otherwise, you will
  8462.    get an "Invalid number of parameters" error.
  8463.  
  8464.     Example:
  8465.  
  8466.     Procedure SmallRandomNumber
  8467.     {Returns a random number between 1 and 100}
  8468.     var SmallRand
  8469.        SmallRand = Random mod 100
  8470.        Return (SmallRand + 1)
  8471.     EndProc
  8472.  
  8473.    See Also: Procedure, EndProc
  8474.  
  8475.    Category: Misc
  8476.  
  8477.    ReturnCode : Number   ReturnCode : Number   ReturnCode : Number
  8478.    When you use the Execute function, a ReturnCode value is fed into this
  8479.    variable when you return to the menu. The code returned is the same as
  8480.    what the DOS ErrorLevel would be. This will not work if you use the
  8481.    UseCommand On function because COMMAND.COM would have been loaded and
  8482.    the returncode would be lost.
  8483.  
  8484.    See Also: ExitCode
  8485.  
  8486.    Category: Execution
  8487.  
  8488.    Right (string,count) : String   Right (string,count) : String   Right (string,count) : String
  8489.    Returns right characters of string for length count.
  8490.  
  8491.     Example: Right('ABCDEF',3) returns 'DEF'
  8492.  
  8493.    Category: String
  8494.  
  8495.  
  8496.  
  8497.    Computer Tyme MarxMenu Users Manual                     Page 148
  8498.    _______________________________________________________________
  8499.  
  8500.  
  8501.    RmDir (String)   RmDir (String)   RmDir (String)
  8502.    Removes a directory. The FileResult variable returns the DOS result
  8503.    error code. A zero in FileResult indicates success. You can't remove a
  8504.    directory that contains files.
  8505.  
  8506.     Example:
  8507.        RmDir 'C:\SABER'
  8508.  
  8509.    See Also: ChDir, MkDir
  8510.  
  8511.    Category: File
  8512.  
  8513.    RollWindow (number)   RollWindow (number)   RollWindow (number)
  8514.    Windows can be looked at as a stack. RollWindow will roll a previous
  8515.    window to the top of the stack making the previous window the current
  8516.    window.
  8517.  
  8518.     Example:
  8519.         ;Make the Third window on the stack the active window
  8520.       RollWindow 3
  8521.         ;Write out message
  8522.       Writeln 'You have mail waiting!'
  8523.         ;Now put the windows back
  8524.       PushBackWindow (3)
  8525.  
  8526.       Procedure PushBackWindow (N)
  8527.  
  8528.       ;Will roll a window back to its original position on the stack
  8529.       ;The parameter should be the same as the parameter for the call
  8530.       ;to RollWindow. If you use RollWindow(3) then use PushBackWindow(3)
  8531.  
  8532.         Loop N
  8533.           RollWindow N
  8534.         EndLoop
  8535.       EndProc ;PushBackWindow
  8536.  
  8537.    See Also: CurrentWindow, SetTopWindow
  8538.  
  8539.    Category: Display
  8540.  
  8541.  
  8542.  
  8543.    Computer Tyme MarxMenu Users Manual                     Page 149
  8544.    _______________________________________________________________
  8545.  
  8546.  
  8547.    Run variable (parameters)   Run variable (parameters)   Run variable (parameters)
  8548.    This runs a procedure that was stored in a variable.
  8549.  
  8550.     var Y
  8551.  
  8552.     Procedure WriteSquared (X)
  8553.        Writeln (X * X)
  8554.     EndProc
  8555.  
  8556.     Example:
  8557.        Y = Loc(WriteSquared)
  8558.        Run Y(3)   ; This will write a 9 on the screen
  8559.  
  8560.    Warning! Don't put the variable you are running in parentheses.
  8561.  
  8562.        Run (Y,3)  ; this won't work
  8563.  
  8564.    See Also: Loc
  8565.  
  8566.    Category: Misc
  8567.  
  8568.    SavePosition (On/Off)   SavePosition (On/Off)   SavePosition (On/Off)
  8569.    If SavePosition is On, MarxMenu will return to the last menu selection
  8570.    you made when MarxMenu is re-entered. As you select menu layers your
  8571.    keystrokes are stored in an internal string variable called KeySave. On
  8572.    exit, MarxMenu writes KeySave to an environment variable KSV. On return
  8573.    to MarxMenu, this variable is retrieved. The return point may be altered
  8574.    by using the command KeySave = (string).
  8575.  
  8576.    Another thing this points out is that environment variables can be used
  8577.    to store information and allow MarxMenu to remember things from one
  8578.    selection to another. Since MarxMenu doesn't stay memory resident, this
  8579.    is the only way I have found to store information.
  8580.  
  8581.    Category: Keyboard, Environment
  8582.  
  8583.    ScreenHeight : Number   ScreenHeight : Number   ScreenHeight : Number
  8584.    Returns number of rows of character on your screen. Normally this is 25.
  8585.  
  8586.    Category: Display
  8587.  
  8588.    ScreenWidth : Number   ScreenWidth : Number   ScreenWidth : Number
  8589.    Returns number of columns of character on your screen. Normally this is
  8590.    80.
  8591.  
  8592.    Category: Display
  8593.  
  8594.  
  8595.  
  8596.    Computer Tyme MarxMenu Users Manual                     Page 150
  8597.    _______________________________________________________________
  8598.  
  8599.  
  8600.    ScrollLock : Boolean   ScrollLock : Boolean   ScrollLock : Boolean
  8601.    Returns true if Scroll Lock is on. This command can also set the Scroll
  8602.    Lock on and off.
  8603.  
  8604.     Example:
  8605.       if ScrollLock then Write 'ScrollLock is On'
  8606.  
  8607.       ScrollLock On  ;Turns ScrollLock On
  8608.       ScrollLock Off ;Turns ScrollLock Off
  8609.  
  8610.       ScrollLock (by itself) turns ScrollLock On.
  8611.  
  8612.    See Also: CapsLock, NumLock
  8613.  
  8614.    Category: System
  8615.  
  8616.    ScrollMove (On/Off)   ScrollMove (On/Off)   ScrollMove (On/Off)
  8617.    This allows you to control whether or not the ScrollLock will allow you
  8618.    to move the top window. Default is On.
  8619.  
  8620.    Category: Display
  8621.  
  8622.    Second : Number   Second : Number   Second : Number
  8623.    Returns the current second.
  8624.  
  8625.    Category: Time
  8626.  
  8627.    SecondOf (Date) : Number   SecondOf (Date) : Number   SecondOf (Date) : Number
  8628.    Returns the second of a date. If Date is passed as a string it is
  8629.    converted automatically.
  8630.  
  8631.    See Also: TimeOf, BadDate
  8632.  
  8633.    Category: Time
  8634.  
  8635.    Security (on/off)   Security (on/off)   Security (on/off)
  8636.    When security is on, Readln echos '*' instead of the letters that are
  8637.    being typed. This is used for such things as entering passwords other
  8638.    than using the password command.
  8639.  
  8640.    Category: String
  8641.  
  8642.    Segment (String) : Number   Segment (String) : Number   Segment (String) : Number
  8643.    Returns the memory segment where string is located.
  8644.  
  8645.    See Also: Offset
  8646.  
  8647.    Category: Memory
  8648.  
  8649.  
  8650.  
  8651.    Computer Tyme MarxMenu Users Manual                     Page 151
  8652.    _______________________________________________________________
  8653.  
  8654.  
  8655.    SelectPath : String   SelectPath : String   SelectPath : String
  8656.    This command uses another program in the Computer Tyme DOS TOOLBOX
  8657.    called Pick Directory to read a text into a variable. You must have
  8658.    Computer Tyme Pick Directory for this feature to work.
  8659.  
  8660.     Example:
  8661.       OnKey 'B'
  8662.       |%BackPath = SelectPath
  8663.       cd %BackPath
  8664.       backup c: a:
  8665.  
  8666.    Category: String
  8667.  
  8668.    SerialPorts : Number   SerialPorts : Number   SerialPorts : Number
  8669.    Returns number of serial ports.
  8670.  
  8671.    Category: System
  8672.  
  8673.    SetArraySize (Array,Size)   SetArraySize (Array,Size)   SetArraySize (Array,Size)
  8674.    If the array is larger than Size the array is truncated. If it is
  8675.    smaller, memory is allocated for the array.
  8676.  
  8677.    Category: Array
  8678.  
  8679.    SetEnv (String)   SetEnv (String)   SetEnv (String)
  8680.    This is used to set environment strings. It can be used on the Current,
  8681.    Parent, Master or Shell environment.
  8682.  
  8683.     Example:
  8684.  
  8685.       SetEnv ('PATH=C:\')
  8686.       SetEnv ('COMSPEC=X:COMMAND.COM')
  8687.  
  8688.    MarxMenu also allows you to select which environment you are working
  8689.    with. This is done with the following commands.
  8690.  
  8691.     CurrentEnvironment
  8692.     ParentEnvironment
  8693.     MasterEnvironment
  8694.     ShellEnvironment
  8695.  
  8696.    See Also: ReadEnv ReadEnvironment ShellEnvironment
  8697.    See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
  8698.  
  8699.    Category: Environment
  8700.  
  8701.  
  8702.  
  8703.    Computer Tyme MarxMenu Users Manual                     Page 152
  8704.    _______________________________________________________________
  8705.  
  8706.  
  8707.    SetTopWindow (Number)   SetTopWindow (Number)   SetTopWindow (Number)
  8708.    Selects a window by number making it the current window and moves it to
  8709.    the top.
  8710.  
  8711.     Example:
  8712.       DrawBox ....
  8713.       ThisWindow = CurrentWindow
  8714.       DrawBox ....
  8715.       DrawBox ....
  8716.       SetTopWindow (ThisWindow)
  8717.  
  8718.    See Also: CurrentWindow, RollWindow, SetWindowUnder
  8719.  
  8720.    Category: Display
  8721.  
  8722.    SetWindowUnder (Window1,Window2)   SetWindowUnder (Window1,Window2)   SetWindowUnder (Window1,Window2)
  8723.    This command moves Window1 underneath Window2. This can be used to put a
  8724.    window back in the stack after you use SetTopWindow.
  8725.  
  8726.    See Also: CurrentWindow, SetTopWindow, RollWindow
  8727.  
  8728.    Category: Display
  8729.  
  8730.    Shadow (on/off)   Shadow (on/off)   Shadow (on/off)
  8731.    Turn window shadows on/off.
  8732.  
  8733.    Category: Display
  8734.  
  8735.    ShadowColor (ForeColor,BackColor)   ShadowColor (ForeColor,BackColor)   ShadowColor (ForeColor,BackColor)
  8736.    Sets the color of the shadow. There are actually two shadow colors.
  8737.    MarxMenu stores different values for big shadows and small shadows.
  8738.  
  8739.    See Also: BigShadow, SmallShadow, ShadowPosition, Shadow
  8740.  
  8741.    Category: Color
  8742.  
  8743.    ShadowPosition (number)   ShadowPosition (number)   ShadowPosition (number)
  8744.    Selects the shadow position around the window. A zero (default) sets the
  8745.    shadow position to the bottom right side. A one sets the shadow position
  8746.    to the bottom left. Using ShadowPosition turns shadowing on so a Shadow
  8747.    On command is not required.
  8748.  
  8749.    See Also: Shadow, ShadowColor, BigShadow, SmallShadow
  8750.  
  8751.    Category: Display
  8752.  
  8753.  
  8754.  
  8755.    Computer Tyme MarxMenu Users Manual                     Page 153
  8756.    _______________________________________________________________
  8757.  
  8758.  
  8759.    Shared   Shared   Shared
  8760.    The key word SHARED can be used to define variables just like VAR. Any
  8761.    variable defined with SHARED is passed globally to and from overlays.
  8762.  
  8763.    The important thing is that the Shared variables must be defined exactly
  8764.    the same way between the overlays. There is also a pre-defined variable
  8765.    called COMMON. Technically, Shared variables are qualifiers off of
  8766.    COMMON.
  8767.  
  8768.    See Also: Var, Constant, Qualifier
  8769.  
  8770.    Category: Variable
  8771.  
  8772.    ShellEnvironment   ShellEnvironment   ShellEnvironment
  8773.    ShellEnvironment selects the environment of the last COMMAND.COM in
  8774.    memory for use with environment access commands. This is usually the
  8775.    same as the Master Environment.
  8776.  
  8777.    More than one COMMAND.COM is loaded when you are running a shell under
  8778.    WINDOWS or DESQVIEW. When using these programs, you will want to access
  8779.    the Shell Envoronment instead of the Master Environment. The Shell
  8780.    Environment is the one that will run batch files.
  8781.  
  8782.    See Also: ReadEnv SetEnv ReadEnvironment MasterEnvironment
  8783.    See Also: CurrentEnvironment ParentEnvironment
  8784.  
  8785.    Category: Environment
  8786.  
  8787.    Shl : Operator   Shl : Operator   Shl : Operator
  8788.    Shift left, does a binary 32 bit shift left.
  8789.  
  8790.    Category: Math
  8791.  
  8792.    Shr : Operator   Shr : Operator   Shr : Operator
  8793.    Shift right, does a binary 32 bit shift right.
  8794.  
  8795.    Category: Math
  8796.  
  8797.    Sin (Radians) : Real   Sin (Radians) : Real   Sin (Radians) : Real
  8798.    Returns the Sine of a real.
  8799.  
  8800.    Category: Math, Float
  8801.  
  8802.    SingleLineBox   SingleLineBox   SingleLineBox
  8803.    Selects single line box for menu borders.
  8804.  
  8805.    See Also: DoubleLineBox, BlockBox, CustomBox, NoBoxBorder
  8806.  
  8807.    Category: Display
  8808.  
  8809.  
  8810.  
  8811.    Computer Tyme MarxMenu Users Manual                     Page 154
  8812.    _______________________________________________________________
  8813.  
  8814.  
  8815.    SmallShadow   SmallShadow   SmallShadow
  8816.    Selects small shadow type.
  8817.  
  8818.    See Also: BigShadow, ShadowPosition, ShadowColor
  8819.  
  8820.    Category: Display
  8821.  
  8822.    SortArray (Array)   SortArray (Array)   SortArray (Array)
  8823.    SortArray will do an alphabetical sort on an array of strings.
  8824.  
  8825.     Example: Sort a Text File
  8826.  
  8827.       Usage: DIR|MARXMENU SORT|MORE
  8828.              MARXMENU SORT INFILE OUTFILE
  8829.  
  8830.       SORT.MNU
  8831.         var SortBuf
  8832.         StandardIO
  8833.         ReadTextFile  (ParamStr(2),SortBuf)
  8834.         SortArray(SortBuf)
  8835.         WriteTextFile (ParamStr(3),SortBuf)
  8836.  
  8837.    Category: Array
  8838.  
  8839.    Sound (on/off)   Sound (on/off)   Sound (on/off)
  8840.    Turn sound effects on/off.
  8841.  
  8842.    Category: Display
  8843.  
  8844.    SplitPath (Array)   SplitPath (Array)   SplitPath (Array)
  8845.    SplitPath reads the PATH environment variable and splits it up into and
  8846.    array of strings that are directories the path is made up of. All
  8847.    directory names are capitalized.
  8848.  
  8849.    See Also: BuildPath, FixPath
  8850.  
  8851.    Category: String, Array, Environment
  8852.  
  8853.    Sqr (Real) : Real   Sqr (Real) : Real   Sqr (Real) : Real
  8854.    Returns the Square Root of a real.
  8855.  
  8856.    Category: Math, Float
  8857.  
  8858.  
  8859.  
  8860.    Computer Tyme MarxMenu Users Manual                     Page 155
  8861.    _______________________________________________________________
  8862.  
  8863.  
  8864.    StandardIO (on/off)   StandardIO (on/off)   StandardIO (on/off)
  8865.    This tells MarxMenu to use standard Input and Output file handles for
  8866.    reading the keyboard and writing to the screen when turned on. When
  8867.    turned off, MarxMenu does direct screen writes. When StandardIO is on,
  8868.    several MarxMenu commands will send ANSI escape sequences. The commands
  8869.    that send ANSI sequences are as follows:
  8870.  
  8871.     TextColor
  8872.     TextBackground
  8873.     ClearScreen
  8874.     ClearLine
  8875.     GotoXY
  8876.  
  8877.    Category: Display, Ansi
  8878.  
  8879.    Str (number) : String   Str (number) : String   Str (number) : String
  8880.    Turns a number into a string.
  8881.  
  8882.    Category: String
  8883.  
  8884.    StuffAKey (String or Number)   StuffAKey (String or Number)   StuffAKey (String or Number)
  8885.    Stuffs a single key into the DOS keyboard buffer when MarxMenu exits.
  8886.    The limit is 16 characters.
  8887.  
  8888.     Example:
  8889.       StuffAKey($3F00) ;stuff the F5 key
  8890.       StuffAKey F5     ;same thing
  8891.  
  8892.    Do not mix StuffAKey with StuffKBD. Use one or the other.
  8893.  
  8894.    Category: Execution, Keyboard, String
  8895.  
  8896.    StuffKBD (String)   StuffKBD (String)   StuffKBD (String)
  8897.    Stuffs the string into the DOS keyboard buffer when MarxMenu exits. The
  8898.    limit is 16 characters.
  8899.  
  8900.     Example:
  8901.        StuffKBD 'LOGOUT' + CR
  8902.  
  8903.    Category: Execution, Keyboard, String
  8904.  
  8905.    StuffKeyboardNow   StuffKeyboardNow   StuffKeyboardNow
  8906.    Normally the keyboard stuffing is done as MarxMenu quits. This forces
  8907.    the keyboard to be stuffed immediately.
  8908.  
  8909.    Category: Keyboard
  8910.  
  8911.  
  8912.  
  8913.    Computer Tyme MarxMenu Users Manual                     Page 156
  8914.    _______________________________________________________________
  8915.  
  8916.  
  8917.    Succ (number) : Number   Succ (number) : Number   Succ (number) : Number
  8918.    Returns number plus 1.
  8919.  
  8920.     Example:
  8921.       Succ(4)  ;returns 5
  8922.  
  8923.    See Also: Pred
  8924.  
  8925.    Category: Math
  8926.  
  8927.    Suggest (Char)   Suggest (Char)   Suggest (Char)
  8928.    Normally the UseArrows command will start in the upper left hand corner.
  8929.    By using the Suggest command, you can set it to start on any menu
  8930.    selection.
  8931.  
  8932.     Example:
  8933.        Suggest 'E'
  8934.  
  8935.    Category: Display
  8936.  
  8937.    TextBackground (color)   TextBackground (color)   TextBackground (color)
  8938.    Sets text background color.
  8939.  
  8940.    Category: Color, Ansi
  8941.  
  8942.    TextColor (forecolor,backcolor)   TextColor (forecolor,backcolor)   TextColor (forecolor,backcolor)
  8943.    Sets the color of text to be displayed on the screen. TextColor resets
  8944.    the value of CapsColor.
  8945.  
  8946.    Category: Color, Ansi
  8947.  
  8948.    TextMode (num)   TextMode (num)   TextMode (num)
  8949.    Sets the video text mode.
  8950.  
  8951.     0 = 40 column BW
  8952.     1 = 40 column COLOR
  8953.     2 = 80 column BW
  8954.     3 = 80 column COLOR
  8955.     7 = Mono
  8956.     258 = 43/50 line EGA BW
  8957.     259 = 43/50 line EGA COLOR
  8958.  
  8959.     Example:
  8960.       TextMode BW80
  8961.  
  8962.    Category: Display
  8963.  
  8964.  
  8965.  
  8966.    Computer Tyme MarxMenu Users Manual                     Page 157
  8967.    _______________________________________________________________
  8968.  
  8969.  
  8970.    TextPos : Number   TextPos : Number   TextPos : Number
  8971.    TextPos returns the current position in a text file. This can be saved
  8972.    so that you can go to the same place using TextSeek.
  8973.  
  8974.    See Also: TextSeek
  8975.  
  8976.    Category: File
  8977.  
  8978.    TextSeek (Number)   TextSeek (Number)   TextSeek (Number)
  8979.    TextSeek moves to a specific byte in a text file.
  8980.  
  8981.    See Also: TextPos
  8982.  
  8983.    Category: File
  8984.  
  8985.    Then   Then   Then
  8986.    Conditional control.
  8987.  
  8988.    See Also: If, Else, Endif, ElseIf
  8989.  
  8990.    Category: Conditional
  8991.  
  8992.    TimeOf (String) : Number   TimeOf (String) : Number   TimeOf (String) : Number
  8993.    Converts a string representing a date to a time number. The number is
  8994.    the number of seconds since 01-01-80. Conversion follows international
  8995.    rules based on the country code.
  8996.  
  8997.     Examples:
  8998.       '4-7-91'                 ;04-07-1991 00:00:00
  8999.       'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
  9000.       '12:35:23a'              ;04-07-1991 00:35:23
  9001.       '3:15'                   ;04-07-1991 03:15:00
  9002.  
  9003.    If the string can't be converted, then BadDate is set to true.
  9004.  
  9005.    Category: International, Time
  9006.  
  9007.    Timer : Number   Timer : Number   Timer : Number
  9008.    Returns the system timer.
  9009.  
  9010.    Category: Time
  9011.  
  9012.    TimeSeparator : String   TimeSeparator : String   TimeSeparator : String
  9013.    Returns the time separator character from the country information.
  9014.  
  9015.    See Also: DecimalSeparator, DateSeparator, CountryCode
  9016.  
  9017.    Category: International, Time
  9018.  
  9019.  
  9020.  
  9021.    Computer Tyme MarxMenu Users Manual                     Page 158
  9022.    _______________________________________________________________
  9023.  
  9024.  
  9025.    TimeString (Time) : String   TimeString (Time) : String   TimeString (Time) : String
  9026.    Returns the time as a string in HH:MM:SS format. 24 hour. If no
  9027.    parameter is passed, Now is assumed.
  9028.  
  9029.     Example:
  9030.       Writeln TimeString
  9031.          ;returns the time of Now as text
  9032.       Writeln TimeString (Now + (5 * SecondsInHour))
  9033.          ;returns the time of 5 hours from now as text
  9034.  
  9035.    Category: String, Time
  9036.  
  9037.    TMaxActiveTasks : Number   TMaxActiveTasks : Number   TMaxActiveTasks : Number
  9038.    Returns the number of active tasks.
  9039.  
  9040.    Category: TaskMax
  9041.  
  9042.    TMaxCreateTask (command string)   TMaxCreateTask (command string)   TMaxCreateTask (command string)
  9043.    TMaxCreateTask creates a new task and executes it. You pas it a command
  9044.    line just like you would use the Execute program. Like the execute
  9045.    program, if you use the COM or EXE extension then you won't load a
  9046.    secondary command.com and save yourself 5k of memory and gain some
  9047.    speed. When the program exits that task is cleared.
  9048.  
  9049.     Example:
  9050.        TMaxCreateTask 'DIR *.*'
  9051.  
  9052.    See Also: TMaxReturnCount
  9053.  
  9054.    Category: TaskMax
  9055.  
  9056.    TMaxCut (TaskID)   TMaxCut (TaskID)   TMaxCut (TaskID)
  9057.    Activates TaskMax data cutting function.
  9058.  
  9059.    See Also: TMaxPaste, TMaxGetPasteBuffer, TMaxSetPasteBuffer
  9060.  
  9061.    Category: TaskMax
  9062.  
  9063.    TMaxDeleteTask (TaskID)   TMaxDeleteTask (TaskID)   TMaxDeleteTask (TaskID)
  9064.    Kills the task identified by TaskID.
  9065.  
  9066.    See Also: TMaxTaskOpenFiles
  9067.  
  9068.    Category: TaskMax
  9069.  
  9070.    TMaxDirectSwitching (On/Off)   TMaxDirectSwitching (On/Off)   TMaxDirectSwitching (On/Off)
  9071.    Turns on or off the ability to use the direct switch keys without going
  9072.    through the task manager menu.
  9073.  
  9074.    Category: TaskMax
  9075.  
  9076.  
  9077.  
  9078.    Computer Tyme MarxMenu Users Manual                     Page 159
  9079.    _______________________________________________________________
  9080.  
  9081.  
  9082.    TMaxEMSMemLim (Number)   TMaxEMSMemLim (Number)   TMaxEMSMemLim (Number)
  9083.    This is a variable that can be either read or set to the maximum number
  9084.    of bytes of EMS memory that each task can have. This prevents one task
  9085.    from hogging up all the EMS. Setting this to 0 disables limiting.
  9086.  
  9087.     Example:
  9088.        TMaxEMSMemLim = 2000000   ;2 megs per task
  9089.        Writeln TMaxEMSLim
  9090.  
  9091.    Category: TaskMax
  9092.  
  9093.    TMaxGetPasteBuffer (Array)   TMaxGetPasteBuffer (Array)   TMaxGetPasteBuffer (Array)
  9094.    Reads the TaskMax paste buffer into and array of strings.
  9095.  
  9096.    See Also: TMaxCut, TMaxPaste, TMaxSetPasteBuffer
  9097.  
  9098.    Category: TaskMax
  9099.  
  9100.    TMaxInstalled : Boolean   TMaxInstalled : Boolean   TMaxInstalled : Boolean
  9101.    This function returns true if TaskMax is installed. Any other TaskMax
  9102.    command produces a run-time error if used when TaskMax is not installed.
  9103.  
  9104.    Category: TaskMax
  9105.  
  9106.    TMaxMaxTasks : Number   TMaxMaxTasks : Number   TMaxMaxTasks : Number
  9107.    Returns the total number of tasks allowed by TaskMax.
  9108.  
  9109.    Category: TaskMax
  9110.  
  9111.    TMaxPaste (TaskID)   TMaxPaste (TaskID)   TMaxPaste (TaskID)
  9112.    Activates TaskMax data pasting function.
  9113.  
  9114.    See Also: TMaxCut, TMaxGetPasteBuffer, TMaxSetPasteBuffer
  9115.  
  9116.    Category: TaskMax
  9117.  
  9118.    TMaxReadTaskInfo (2D Array)   TMaxReadTaskInfo (2D Array)   TMaxReadTaskInfo (2D Array)
  9119.    Reads the task information table into a 2 dimensional array where the
  9120.    first field is the task name and the second field is the TaskId number.
  9121.    The TaskID number is used by all TMax commands that act on a single task
  9122.    (TMaxDelete, TMaxSwitchTasks ... ).
  9123.  
  9124.     Example:
  9125.        var Tasks
  9126.        TMaxReadTaskInfo(Tasks)
  9127.        Loop Tasks
  9128.           Writeln Tasks[LoopIndex,1] ' ' Tasks[LoopIndex,2]
  9129.        EndLoop
  9130.  
  9131.    Category: TaskMax
  9132.  
  9133.  
  9134.  
  9135.    Computer Tyme MarxMenu Users Manual                     Page 160
  9136.    _______________________________________________________________
  9137.  
  9138.  
  9139.    TMaxResult : Number   TMaxResult : Number   TMaxResult : Number
  9140.    TMaxResult is a variable containing return information that other TMax
  9141.    command return or the result status of a TMax command.
  9142.  
  9143.    Category: TaskMax
  9144.  
  9145.    TMaxReturnCount   TMaxReturnCount   TMaxReturnCount
  9146.    This variable sets the number of timer ticks (18.2 ticks per second)
  9147.    that TMaxCreateTask will execute a program before returning to the
  9148.    original program. If it is set to 0 it will stay in the original
  9149.    program. By setting TMaxReturnCount to a number other than 0 you can run
  9150.    a program for a few seconds and come back. This is used to preload tasks
  9151.    that you might later want to switch to.
  9152.  
  9153.      Example:
  9154.         TMaxReturnCount = 27      ;1.5 Seconds
  9155.         TMaxCreateTask 'DM3.EXE'  ;load a file manager
  9156.         TMaxReturnCount = 0       ;set back to 0 for normal usage
  9157.  
  9158.    See Also: TMaxCreateTask
  9159.  
  9160.    Category: TaskMax
  9161.  
  9162.    TMaxSetPasteBuffer (Array)   TMaxSetPasteBuffer (Array)   TMaxSetPasteBuffer (Array)
  9163.    Sets the TaskMax paste buffer to the strings in array.
  9164.  
  9165.    See Also: TMaxCut, TMaxPaste, TMaxGetPasteBuffer
  9166.  
  9167.    Category: TaskMax
  9168.  
  9169.    TMaxSwitchTasks (TaskID)   TMaxSwitchTasks (TaskID)   TMaxSwitchTasks (TaskID)
  9170.    Switches the current task out and selects the task identified be TaskID.
  9171.  
  9172.    Category: TaskMax
  9173.  
  9174.    TMaxSwitchToManager   TMaxSwitchToManager   TMaxSwitchToManager
  9175.    This command brings up the task manager the same way as if you had
  9176.    pressed the hot key.
  9177.  
  9178.    Category: TaskMax
  9179.  
  9180.    TMaxTakeOver (On/Off)   TMaxTakeOver (On/Off)   TMaxTakeOver (On/Off)
  9181.    This allows you MarxMenu program to become the task manager menu. When
  9182.    the user presses the hot key to pop up the task switching menu it will
  9183.    pop up your MarxMenu program instead. You can disable this by setting it
  9184.    to off.
  9185.  
  9186.    Category: TaskMax
  9187.  
  9188.  
  9189.  
  9190.    Computer Tyme MarxMenu Users Manual                     Page 161
  9191.    _______________________________________________________________
  9192.  
  9193.  
  9194.    TMaxTaskOpenFiles (TadkID) : Number   TMaxTaskOpenFiles (TadkID) : Number   TMaxTaskOpenFiles (TadkID) : Number
  9195.    Returns the number of open files a task has. You may want to test to see
  9196.    if a task that open files before deleting the task.
  9197.  
  9198.    See Also: TMaxDeleteTask
  9199.  
  9200.    Category: TaskMax
  9201.  
  9202.    TMaxThisTask : Number   TMaxThisTask : Number   TMaxThisTask : Number
  9203.    Returns the TaskID of the current task.
  9204.  
  9205.    Category: TaskMax
  9206.  
  9207.    TMaxVersion : Number   TMaxVersion : Number   TMaxVersion : Number
  9208.    Returns the version number of TaskMax.
  9209.  
  9210.    Category: TaskMax
  9211.  
  9212.    Today : Date   Today : Date   Today : Date
  9213.    Returns the current day as a date. The date returned has the time set to
  9214.    midnight or 00:00:00. It can also be used to set the system date.
  9215.  
  9216.     Read the current day;
  9217.        X = Today
  9218.     Set the system clock:
  9219.        Today = TimeOf '08-19-91'
  9220.  
  9221.    See Also: Tomorrow, Now
  9222.  
  9223.    Category: Time
  9224.  
  9225.    Tomorrow : Time   Tomorrow : Time   Tomorrow : Time
  9226.    Returns the time of the day after today at midnight.
  9227.  
  9228.    See Also: Today, Now
  9229.  
  9230.    Category: Time
  9231.  
  9232.  
  9233.  
  9234.    Computer Tyme MarxMenu Users Manual                     Page 162
  9235.    _______________________________________________________________
  9236.  
  9237.  
  9238.    Tone (Frequency,Duration)   Tone (Frequency,Duration)   Tone (Frequency,Duration)
  9239.    This command plays a note at Frequency cycles per second for a period of
  9240.    Duration 1/18 of a second. The reason it is in 1/18 seconds is because
  9241.    there is a standard interrupt that gives me that time period. The IBM
  9242.    series computers are not music oriented machines so don't throw away
  9243.    your Compact Disk player.
  9244.  
  9245.    The maximum duration is 255 1/18 of a second. Normally, MarxMenu will
  9246.    create a break in between notes equal to 1/8 of the duration of the
  9247.    note. If you want to eliminate the break and create a 'slur' (music
  9248.    term), add 256 to the duration. This tells MarxMenu to connect the notes
  9249.    without a break.
  9250.  
  9251.    Category: Music
  9252.  
  9253.    TotalDiskSpace <drive> : Number   TotalDiskSpace <drive> : Number   TotalDiskSpace <drive> : Number
  9254.    Returns total disk space in bytes.
  9255.  
  9256.     Example:
  9257.       Writeln (TotalDiskSpace 'C')
  9258.  
  9259.    TotalDiskSpace only looks at the first character of the string for
  9260.    the drive letter.
  9261.  
  9262.    Category: System
  9263.  
  9264.    TotalEMS : Number   TotalEMS : Number   TotalEMS : Number
  9265.    Returns total EMS memory in bytes.
  9266.  
  9267.    Category: Memory
  9268.  
  9269.    Trim (string)   Trim (string)   Trim (string)
  9270.    Trims white space from both ends of a string. White space is
  9271.    blank characters and lower.
  9272.  
  9273.    Category: String
  9274.  
  9275.  
  9276.  
  9277.    Computer Tyme MarxMenu Users Manual                     Page 163
  9278.    _______________________________________________________________
  9279.  
  9280.  
  9281.    TrueName (String) : String   TrueName (String) : String   TrueName (String) : String
  9282.  
  9283.    There is an undocumented feature of DOS called TRUENAME. It returns the
  9284.    real name of a file or directory looking past such things as drive
  9285.    mappings and Assigned or Substituted drives. On local drives you get the
  9286.    drive and path where the file really is. On networks you get server and
  9287.    volume information where the server name starts with a '\\'.
  9288.  
  9289.     Example:
  9290.     TrueName ('H:')  ;returns \\TYME\SYS\HOME\MARC
  9291.  
  9292.    See Also: CleanFileName
  9293.  
  9294.    Category: String, File
  9295.  
  9296.    UnBlank : Boolean   UnBlank : Boolean   UnBlank : Boolean
  9297.    Unblank returns true if MarxMenu has determined that the screen blanker
  9298.    should finish. Your screen blanker needs to call UnBlank to determine
  9299.    when to unblank the screen.
  9300.  
  9301.     Example:
  9302.       while not UnBlank
  9303.          <your screen blanker>
  9304.       endwhile
  9305.  
  9306.    You can also set UnBlank to true when you want to UnBlank the screen.
  9307.    This can be used if you write your own screen blanker that is an
  9308.    external program.
  9309.  
  9310.     Example:
  9311.       Procedure MyBlanker
  9312.          Execute 'MYBLANK.EXE'
  9313.          UnBlank = True
  9314.       EndProc
  9315.  
  9316.    See Also: BlankScreenProgram
  9317.  
  9318.    Category: Display
  9319.  
  9320.    UniqueFileName : String   UniqueFileName : String   UniqueFileName : String
  9321.    Uses the create new file call to get a filename that is different than
  9322.    any other file name. It is tied to the DOS call that is used to create a
  9323.    unique file name according to the rules of your operating system.
  9324.  
  9325.    Category: File, String
  9326.  
  9327.  
  9328.  
  9329.    Computer Tyme MarxMenu Users Manual                     Page 164
  9330.    _______________________________________________________________
  9331.  
  9332.  
  9333.    Until   Until   Until
  9334.    Conditional control.
  9335.  
  9336.     Example:
  9337.        Repeat
  9338.           <statement>
  9339.           <statement>
  9340.        Until <condition>
  9341.  
  9342.    See Also: Repeat.
  9343.  
  9344.    Category: Conditional
  9345.  
  9346.    UpperCase (String) : String   UpperCase (String) : String   UpperCase (String) : String
  9347.    Return UpperCase of String including support for international
  9348.    characters.
  9349.  
  9350.    Category: String, International
  9351.  
  9352.    UpperCaseOnly : Boolean   UpperCaseOnly : Boolean   UpperCaseOnly : Boolean
  9353.    Setting UpperCaseOnly to on forces text entered with Readln or ReadKey
  9354.    to upper case.
  9355.  
  9356.    Category: String
  9357.  
  9358.    UseArrows   UseArrows   UseArrows
  9359.    UseArrows tells MarxMenu that the selection will be made by moving an
  9360.    inverse video bar over the selections. No parameters are required for
  9361.    this command to work. It will pick the first line with a capital letter
  9362.    as the first menu selection. All text in the window must be indented at
  9363.    least one space and there must be one space between the end of the line
  9364.    and the right wall of the window. Multiple items on the same line must
  9365.    be separated by two or more spaces.
  9366.  
  9367.    The OnKey selection is triggered by either the first capital letter in
  9368.    the selection or by a number from 0 - 9 or some punctuation characters.
  9369.    This number or letter will be a different color if you use the CapsColor
  9370.    command. (See Also: PULL.MNU for an example).
  9371.  
  9372.    UseArrows Off will disable this feature.
  9373.  
  9374.    See Also: ReadKey
  9375.  
  9376.    Category: Display
  9377.  
  9378.  
  9379.  
  9380.    Computer Tyme MarxMenu Users Manual                     Page 165
  9381.    _______________________________________________________________
  9382.  
  9383.  
  9384.    UseCommand (on/off)   UseCommand (on/off)   UseCommand (on/off)
  9385.    Used with Execute. UseCommand will load COMMAND.COM before running the
  9386.    specified program. Its not as fast, because the system has to find and
  9387.    load COMMAND.COM, then the specified program. The advantage is if
  9388.    COMMAND.COM is loaded, it will allow you to run batch files and internal
  9389.    DOS commands. It also doesn't require you to specify the COM or EXE
  9390.    extension.
  9391.  
  9392.     Example:
  9393.       OnKey 'D'
  9394.       |UseCommand On
  9395.       |Execute 'DM'
  9396.  
  9397.    The default is OFF.
  9398.  
  9399.    See Also: Execute
  9400.  
  9401.    Category: Execution
  9402.  
  9403.    UsedDiskSpace <drive> : Number   UsedDiskSpace <drive> : Number   UsedDiskSpace <drive> : Number
  9404.    Returns used disk space in bytes.
  9405.  
  9406.     Example:
  9407.       Writeln (UsedDiskSpace 'C')
  9408.  
  9409.    UsedDiskSpace only looks at the first character of the string for the
  9410.    drive letter.
  9411.  
  9412.    Category: System
  9413.  
  9414.    UseNovPassword : Boolean   UseNovPassword : Boolean   UseNovPassword : Boolean
  9415.    If UseNovPassword is set to true then the screen blanker will require
  9416.    that the user type his Novell password to unblank the screen. Full
  9417.    Novell security and intruder detection is active here. If Novell's
  9418.    intruder detection is active, then if an intruder fails to type in the
  9419.    password after a number of attempts, then Netware will not accept the
  9420.    correct password until intruder detection allows it.
  9421.  
  9422.    If you don't know what intruder detection is, read the Netware manuals
  9423.    on the subject. It is something you should use.
  9424.  
  9425.    Category: Novell
  9426.  
  9427.    Value (string) : Number   Value (string) : Number   Value (string) : Number
  9428.    Converts String to Number. Leading $ indicates Hex.
  9429.  
  9430.    Category: String, Math
  9431.  
  9432.  
  9433.  
  9434.    Computer Tyme MarxMenu Users Manual                     Page 166
  9435.    _______________________________________________________________
  9436.  
  9437.  
  9438.    Var   Var   Var
  9439.    Used to create variables.
  9440.  
  9441.    See Also: Constant, Shared, Qualifier
  9442.  
  9443.    Category: Variable
  9444.  
  9445.    VarType (Variable) : String   VarType (Variable) : String   VarType (Variable) : String
  9446.    VarType returns the type of data contained in a variable. Types returned
  9447.    include the following:
  9448.  
  9449.      NUL
  9450.      NUMBER
  9451.      REAL
  9452.      STRING
  9453.      ARRAY
  9454.      FILE
  9455.      POINTER
  9456.      PROCEDURE
  9457.      UNKNOWN
  9458.  
  9459.    Category: Variable
  9460.  
  9461.    VideoMode : Number   VideoMode : Number   VideoMode : Number
  9462.    Returns Current Video Mode.
  9463.  
  9464.    Category: Display
  9465.  
  9466.    VideoPage : Number   VideoPage : Number   VideoPage : Number
  9467.    Returns Current Video Page.
  9468.  
  9469.    Category: Display
  9470.  
  9471.    ViewArray (Array)   ViewArray (Array)   ViewArray (Array)
  9472.    Allows you to view an array of strings in the current window. Works just
  9473.    like ViewTextFile.
  9474.  
  9475.    See Also: ViewTextFile
  9476.  
  9477.    Category: Display, Array
  9478.  
  9479.    ViewTextFile (Name)   ViewTextFile (Name)   ViewTextFile (Name)
  9480.    This command lets you view a text file in the current window.
  9481.  
  9482.    See Also: ViewArrayFile
  9483.  
  9484.    Category: Display, File
  9485.  
  9486.  
  9487.  
  9488.    Computer Tyme MarxMenu Users Manual                     Page 167
  9489.    _______________________________________________________________
  9490.  
  9491.  
  9492.    VinCheckService (Service) : Number   VinCheckService (Service) : Number   VinCheckService (Service) : Number
  9493.    Returns information about the requested service.
  9494.  
  9495.     Services:
  9496.  
  9497.        1 - Communications
  9498.        2 - Primary 3270 Emulation ID
  9499.        3 - Async Terminal Emulation
  9500.        4 - File Deflection
  9501.        5 - BPS
  9502.        6 - UnDocumented
  9503.        7 - StreetTalk
  9504.        8 - Environment
  9505.        9 - NetBios
  9506.       10 - Secondary 3270 Emulation ID
  9507.       11 - Semaphore
  9508.       12 - 3270 Emulation Active Status
  9509.       13 - 3270 Keyboard Interrupt Simulator
  9510.       14 - Advanced 3270 SNA
  9511.       15 - UnDocumented
  9512.       16 - UnDocumented
  9513.  
  9514.     Return Codes:
  9515.        0 - Service is Installed
  9516.        1 - Service is not Installed
  9517.        2 - Invalid Service Number
  9518.  
  9519.    Category: Vines
  9520.  
  9521.    VinesInt : Number   VinesInt : Number   VinesInt : Number
  9522.    Returns the interrupt number the Vines software is servicing.
  9523.  
  9524.    Category: Vines
  9525.  
  9526.    VinesLoaded : Boolean   VinesLoaded : Boolean   VinesLoaded : Boolean
  9527.    VinesLoaded returns True if the Vines shell is loaded.
  9528.  
  9529.    Category: Vines
  9530.  
  9531.    VinUserName : String   VinUserName : String   VinUserName : String
  9532.    Returns the StreetTalk name of the person who is logged in.
  9533.  
  9534.    Category: Vines
  9535.  
  9536.  
  9537.  
  9538.    Computer Tyme MarxMenu Users Manual                     Page 168
  9539.    _______________________________________________________________
  9540.  
  9541.  
  9542.    VinSerialNumber (Drive) : Number   VinSerialNumber (Drive) : Number   VinSerialNumber (Drive) : Number
  9543.    Returns the Vines serial number on the server that the drive letter
  9544.    referrences.
  9545.  
  9546.     Example:
  9547.       Writeln VinSerialNumber ('Z')
  9548.  
  9549.    Category: Vines
  9550.  
  9551.    Volume (drive)   Volume (drive)   Volume (drive)
  9552.    Returns the volume label of the specified drive.
  9553.  
  9554.    Category: System
  9555.  
  9556.    Wait (number)   Wait (number)   Wait (number)
  9557.    Delay for a number of 1/100 seconds. Wait 250 delays 2 1/2 seconds.
  9558.  
  9559.    If you are running a multi-tasker like Windows 3 or DesqView, and the
  9560.    delay is over 1/4 second, MarxMenu will release time slices back to DOS
  9561.    and not bog down the CPU power on long waits. MarxMenu also releases CPU
  9562.    cycles while idel at the keyboard.
  9563.  
  9564.    See Also: WaitOrKbdReady
  9565.  
  9566.    Category: Misc
  9567.  
  9568.    WaitOrKbdReady (Number)   WaitOrKbdReady (Number)   WaitOrKbdReady (Number)
  9569.    This command is just like the WAIT command except the wait is aborted by
  9570.    pressing any key. Time to wait is in hundredths of a second. This
  9571.    command is useful when using MarxMenu to write a running demo.
  9572.  
  9573.    See Also: Wait
  9574.  
  9575.    Category: Keyboard
  9576.  
  9577.    WhereX : Number   WhereX : Number   WhereX : Number
  9578.    Returns the horizontal position of the cursor within the current window.
  9579.  
  9580.    Category: Display
  9581.  
  9582.    WhereXAbs : Number   WhereXAbs : Number   WhereXAbs : Number
  9583.    Returns the horizontal screen position of the cursor.
  9584.  
  9585.    Category: Display
  9586.  
  9587.    WhereY : Number   WhereY : Number   WhereY : Number
  9588.    Returns the vertical position of the cursor within the current window.
  9589.  
  9590.  
  9591.  
  9592.    Computer Tyme MarxMenu Users Manual                     Page 169
  9593.    _______________________________________________________________
  9594.  
  9595.  
  9596.    WhereYAbs : Number   WhereYAbs : Number   WhereYAbs : Number
  9597.    Returns the vertical screen position of the cursor.
  9598.  
  9599.    Category: Display
  9600.  
  9601.    While   While   While
  9602.    Used for program control. Usage:
  9603.  
  9604.     WHILE (condition)
  9605.        (statement)
  9606.        (statement)
  9607.     ENDWHILE
  9608.  
  9609.    Execution stays in the while loop as long as the condition is true.
  9610.  
  9611.    See Also: EndWhile
  9612.  
  9613.    Category: Conditional
  9614.  
  9615.    WholeFileNames (On/Off)   WholeFileNames (On/Off)   WholeFileNames (On/Off)
  9616.    Controls if ReadDirectory will return the whole name and path or just
  9617.    the filename part.
  9618.  
  9619.    See Also: ReadDirectory
  9620.  
  9621.    Category: File
  9622.  
  9623.    Window (X,Y,Width,Height)   Window (X,Y,Width,Height)   Window (X,Y,Width,Height)
  9624.    Window changes the size of the active area of the screen. It can be used
  9625.    to either reduce or expand where text can be written.
  9626.  
  9627.    See Also: DrawBox
  9628.  
  9629.    Category: Display
  9630.  
  9631.    WindowHeight : Number   WindowHeight : Number   WindowHeight : Number
  9632.    Returns number of rows in current window.
  9633.  
  9634.    Category: Display
  9635.  
  9636.    WindowWidth : Number   WindowWidth : Number   WindowWidth : Number
  9637.    Returns number of columns in current window.
  9638.  
  9639.    Category: Display
  9640.  
  9641.  
  9642.  
  9643.    Computer Tyme MarxMenu Users Manual                     Page 170
  9644.    _______________________________________________________________
  9645.  
  9646.  
  9647.    WinX : Number   WinX : Number   WinX : Number
  9648.    Returns the horizontal location of the left hand corner of the window.
  9649.  
  9650.    See Also: WinY
  9651.  
  9652.    Category: Display
  9653.  
  9654.    WinY : Number   WinY : Number   WinY : Number
  9655.    Returns the vertical location of the left hand corner of the window.
  9656.  
  9657.    See Also: WinX
  9658.  
  9659.    Category: Display
  9660.  
  9661.    Write (string)   Write (string)   Write (string)
  9662.    Writes (string) on the screen at the current cursor position.
  9663.  
  9664.    Category: Display
  9665.  
  9666.    WriteCenter (string)   WriteCenter (string)   WriteCenter (string)
  9667.    Writes (string) centered in current window.
  9668.  
  9669.    Category: Display
  9670.  
  9671.    WriteFileBlock (Name,Offset,Size,Segment)   WriteFileBlock (Name,Offset,Size,Segment)   WriteFileBlock (Name,Offset,Size,Segment)
  9672.    WriteFileBlock writes disk file Name starting at byte Offset for Size
  9673.    bytes from memory buffer Segment. It is intended to write any kind of
  9674.    file. If the file doesn't exist, it is created.
  9675.  
  9676.    The maximum value for Size is 65504. The segment must be as large as the
  9677.    number of bytes you are writing.
  9678.  
  9679.    See Also: ReadFileBlock, GetMem, FreeMem
  9680.  
  9681.    Category: File, Memory
  9682.  
  9683.    Writeln (string)   Writeln (string)   Writeln (string)
  9684.    Writes (string) on the screen followed by a CR-LF (carriage
  9685.    return-line feed).
  9686.  
  9687.    Category: Display
  9688.  
  9689.    WriteTextFile (FileName,Array)   WriteTextFile (FileName,Array)   WriteTextFile (FileName,Array)
  9690.    This command writes a string array to a text file. Do not use FileCreate
  9691.    of any other file commands with this. This command does it all.
  9692.  
  9693.    See Also: ReadTextFile
  9694.  
  9695.    Category: File, Array
  9696.  
  9697.  
  9698.  
  9699.    Computer Tyme MarxMenu Users Manual                     Page 171
  9700.    _______________________________________________________________
  9701.  
  9702.  
  9703.    WriteVertical (string)   WriteVertical (string)   WriteVertical (string)
  9704.    Writes (string) vertically on the screen from the current cursor
  9705.    position.
  9706.  
  9707.     Example:
  9708.       WriteVertical( 'Hello' )
  9709.  
  9710.         ;This would display
  9711.           H
  9712.           e
  9713.           l
  9714.           l
  9715.           o
  9716.  
  9717.    Category: Display
  9718.  
  9719.    Xor : Operator   Xor : Operator   Xor : Operator
  9720.    Returns logical Xor if operators are boolean; or bitwise Xor if
  9721.    operators are numeric.
  9722.  
  9723.    Category: Math, Boolean
  9724.  
  9725.    Year : Number   Year : Number   Year : Number
  9726.    Returns current Year.
  9727.  
  9728.    Category: Time
  9729.  
  9730.    YearOf (Date) : Number   YearOf (Date) : Number   YearOf (Date) : Number
  9731.    Returns the year of a date. If Date is passed as a string it is
  9732.    converted automatically.
  9733.  
  9734.    See Also: TimeOf, BadDate
  9735.  
  9736.    Category: Time
  9737.  
  9738.  
  9739.  
  9740.    Computer Tyme MarxMenu Users Manual                     Page 172
  9741.    _______________________________________________________________
  9742.  
  9743.  
  9744.    STRING CONSTANTS   STRING CONSTANTS   STRING CONSTANTS
  9745.  
  9746.       F1   = #0#59   SF1  = #0#84   CF1  = #0#94   AF1  = #0#104
  9747.       F2   = #0#60   SF2  = #0#85   CF2  = #0#95   AF2  = #0#105
  9748.       F3   = #0#61   SF3  = #0#86   CF3  = #0#96   AF3  = #0#106
  9749.       F4   = #0#62   SF4  = #0#87   CF4  = #0#97   AF4  = #0#107
  9750.       F5   = #0#63   SF5  = #0#88   CF5  = #0#98   AF5  = #0#108
  9751.       F6   = #0#64   SF6  = #0#89   CF6  = #0#99   AF6  = #0#109
  9752.       F7   = #0#65   SF7  = #0#90   CF7  = #0#100  AF7  = #0#110
  9753.       F8   = #0#66   SF8  = #0#91   CF8  = #0#101  AF8  = #0#111
  9754.       F9   = #0#67   SF9  = #0#92   CF9  = #0#102  AF9  = #0#112
  9755.       F10  = #0#68   SF10 = #0#93   CF10 = #0#103  AF10 = #0#113
  9756.       F11  = #0#133  SF11 = #0#135  CF11 = #0#137  AF11 = #0#139
  9757.       F12  = #0#134  SF12 = #0#136  CF12 = #0#138  AF12 = #0#140
  9758.  
  9759.       ALT1 = #0#120  BKSP = #8
  9760.       ALT2 = #0#121  CR   = #13
  9761.       ALT3 = #0#122  CRLF = #13#10
  9762.       ALT4 = #0#123  ESC  = #27
  9763.       ALT5 = #0#124  FF   = #12
  9764.       ALT6 = #0#125  LF   = #10
  9765.       ALT7 = #0#126
  9766.       ALT8 = #0#127
  9767.       ALT9 = #0#128
  9768.       ALT0 = #0#129
  9769.  
  9770.    Category: Constants
  9771.  
  9772.    TIME AND DATE CONSTANTS   TIME AND DATE CONSTANTS   TIME AND DATE CONSTANTS
  9773.  
  9774.       Jan = 1        Sun = 0
  9775.       Feb = 2        Mon = 1
  9776.       Mar = 3        Tue = 2
  9777.       Apr = 4        Wed = 3
  9778.       May = 5        Thu = 4
  9779.       Jun = 6        Fri = 5
  9780.       Jul = 7        Sat = 6
  9781.       Aug = 8
  9782.       Sep = 9        SecondsInHour = 3600
  9783.       Oct = 10       SecondsInDay  = 86400
  9784.       Nov = 11
  9785.       Dec = 12
  9786.  
  9787.    Category: Constants
  9788.  
  9789.  
  9790.  
  9791.    Computer Tyme MarxMenu Users Manual                     Page 173
  9792.    _______________________________________________________________
  9793.  
  9794.  
  9795.    VIDEO CONSTANTS   VIDEO CONSTANTS   VIDEO CONSTANTS
  9796.  
  9797.     Video Modes:   Display Types:
  9798.  
  9799.       BW40 = 0       0 = HercMono
  9800.       CO40 = 1       1 = CGA
  9801.       BW80 = 2       2 = MCGA
  9802.       CO50 = 3       3 = EGA
  9803.       MONO = 7       4 = VGA
  9804.  
  9805.    Category: Constants
  9806.  
  9807.    COLOR CONSTANTS   COLOR CONSTANTS   COLOR CONSTANTS
  9808.  
  9809.       Black   = 0    DGrey    = 8
  9810.       Blue    = 1    LBlue    = 9
  9811.       Green   = 2    LGreen   = 10
  9812.       Cyan    = 3    LCyan    = 11
  9813.       Red     = 4    LRed     = 12
  9814.       Magenta = 5    LMagenta = 13
  9815.       Brown   = 6    Yellow   = 14
  9816.       Grey    = 7    White    = 15
  9817.  
  9818.    Category: Constants
  9819.  
  9820.    BOOLEAN CONSTANTS   BOOLEAN CONSTANTS   BOOLEAN CONSTANTS
  9821.  
  9822.       True    Yes    On
  9823.       False   No     Off
  9824.  
  9825.    Category: Constants
  9826.  
  9827.    CONDITIONAL STATEMENTS   CONDITIONAL STATEMENTS   CONDITIONAL STATEMENTS
  9828.  
  9829.    MarxMenu has a full complement of conditional statements. They are as
  9830.    follows:
  9831.  
  9832.     IF->ELSE->ENDIF           Where, IF [condition]
  9833.                                         statement
  9834.                                         statement
  9835.                                      ELSE
  9836.                                         statement
  9837.                                         statement
  9838.                                      ENDIF
  9839.  
  9840.     IF->THEN                  Where, IF [condition] THEN statement
  9841.  
  9842.  
  9843.  
  9844.    Computer Tyme MarxMenu Users Manual                     Page 174
  9845.    _______________________________________________________________
  9846.  
  9847.  
  9848.     IF->ELSE->ELSEIF->ENDIF   Where, IF [condition]
  9849.                                         statement
  9850.                                         statement
  9851.                                      ELSEIF [condition]
  9852.                                         statement
  9853.                                         statement
  9854.                                      ELSEIF [condition]
  9855.                                         statement
  9856.                                         statement
  9857.                                      ELSE
  9858.                                         statement
  9859.                                         statement
  9860.                                      ENDIF
  9861.  
  9862.        REPEAT->UNTIL          Where, REPEAT
  9863.                                         statement
  9864.                                         statement
  9865.                                      UNTIL [condition]
  9866.  
  9867.        WHILE->ENDWHILE        Where, WHILE [conditon]
  9868.                                         statement
  9869.                                         statement
  9870.                                      ENDWHILE
  9871.  
  9872.  
  9873.        PROCEDURE->ENDPROC     PROCEDURE (name)
  9874.                                         statement
  9875.                                         statement
  9876.                               ENDPROC
  9877.  
  9878.  
  9879.        LOOP->ENDLOOP          LOOP (number)
  9880.                                         statement
  9881.                                         statement
  9882.                               ENDLOOP
  9883.  
  9884.    ENVIRONMENT VARIABLES USED BY MARXMENU   ENVIRONMENT VARIABLES USED BY MARXMENU   ENVIRONMENT VARIABLES USED BY MARXMENU
  9885.  
  9886.    MarxMenu uses a variety of environment variables to control various
  9887.    MarxMenu functions. Many of these variables are optional.
  9888.  
  9889.     Set MouseX=(Number)
  9890.  
  9891.    Sets the horizontal sensitivity of the mouse. Default is 15.
  9892.  
  9893.     Set MouseY=(Number)
  9894.  
  9895.    Sets the vertical sensitivity of the mouse. Default is 25.
  9896.  
  9897.     Set MxEcho=(On/Off)
  9898.  
  9899.  
  9900.  
  9901.    Computer Tyme MarxMenu Users Manual                     Page 175
  9902.    _______________________________________________________________
  9903.  
  9904.  
  9905.    If you set the first line of MARX.BAT to @ECHO %MXECHO% then by setting
  9906.    the environment variable MxEcho to ON or OFF, you can control the echo
  9907.    in the MARX.BAT file without having to edit it. This allows you to do
  9908.    diagnostics on a network without messing up other users.
  9909.  
  9910.     Set Temp=(Directory)
  9911.  
  9912.    Normally, MarxMenu creates temporary batch files in the same directory
  9913.    as MARXMENU.EXE. If you set TEMP to a directory, MarxMenu will use this
  9914.    directory instead. This complies with Windows / DOS 5.0 standards.
  9915.  
  9916.     Set MxCmd=(Command)
  9917.  
  9918.    MarxMenu uses MXCMD to control what the MARX.BAT file executes. You must
  9919.    have enough environment space available for MarxMenu to use.
  9920.  
  9921.     Set KSV=
  9922.  
  9923.    MarxMenu stores a series of keystrokes in the KSV variable when
  9924.    SavePosition is On.
  9925.  
  9926.     Set STATION=(Number)
  9927.  
  9928.    If you are on a network that is not Novell, then you should set this
  9929.    variable to a unique number for each station between 0 and 255.
  9930.  
  9931.     Set TASK=(Number)
  9932.  
  9933.    If you are running a multi-tasking operating system other than DesqView,
  9934.    and MarxMenu is running more than one task, then set an environment
  9935.    variable TASK to a unique number for each task.
  9936.  
  9937.    MarxMenu also accesses your COMSPEC variable and your PATH variable when
  9938.    executing programs.
  9939.  
  9940.    COMMAND CATEGORIES   COMMAND CATEGORIES   COMMAND CATEGORIES
  9941.  
  9942.    Here is a breakdown of MarxMenu commands by command category. Many
  9943.    MarxMenu commands are in several categories. These are the same
  9944.    categories as in the MarxHelp utility.
  9945.  
  9946.  
  9947.  
  9948.    Computer Tyme MarxMenu Users Manual                     Page 176
  9949.    _______________________________________________________________
  9950.  
  9951.  
  9952.    MISC COMMANDS   MISC COMMANDS   MISC COMMANDS
  9953.  
  9954.     |                       | (Vertical Bar)
  9955.     (                       ( : Operator
  9956.     )                       ) : Operator
  9957.     Alias                   Alias
  9958.     AllowAbort              AllowAbort (On/Off)
  9959.     AllowEsc                AllowEsc (On/Off)
  9960.     Comment                 Comment
  9961.     EndComment              EndComment
  9962.     EndProc                 EndProc
  9963.     Include                 Include (MenuName)
  9964.     NetworkVersion          NetworkVersion : Boolean
  9965.     Nil                     Nil
  9966.     Procedure               Procedure (name)
  9967.     Return                  Return (param,param,...)
  9968.     Run                     Run variable (parameters)
  9969.     Wait                    Wait (number)
  9970.  
  9971.    MATH COMMANDS   MATH COMMANDS   MATH COMMANDS
  9972.  
  9973.     *                       * : Operator
  9974.     +                       + : Operator
  9975.     -                       - : Operator
  9976.     /                       / : Operator
  9977.     <                       < : Operator
  9978.     <=                      <= : Operator
  9979.     <>                      <> : Operator
  9980.     =                       = : Operator
  9981.     >                       > : Operator
  9982.     >=                      >= : Operator
  9983.     Abs                     Abs : Number
  9984.     And                     And : Operator
  9985.     ArcTan                  ArcTan (Radians) : Real
  9986.     Cos                     Cos (Radians) : Real
  9987.     Exp                     Exp (Real) : Real
  9988.     Fraction                Fraction (Real) : Real
  9989.     HighWord                HighWord (Number) : Number
  9990.     Int                     Int (Real) : Real
  9991.     Integer                 Integer (Real) : Number
  9992.     Ln                      Ln (Real) : Real
  9993.     LowWord                 LowWord (Number) : Number
  9994.     Max                     Max (Num,Num) : Num
  9995.     Min                     Min (Num,Num) : Num
  9996.     Mod                     Mod : Operator
  9997.     Not                     Not : Operator
  9998.     Or                      Or : Operator
  9999.     Pi                      Pi : Real
  10000.     Power                   Power (Real,Real) : Real
  10001.     Pred                    Pred (number) : Number
  10002.     Random                  Random : Number
  10003.     Real                    Real (Integer) : Real
  10004.  
  10005.  
  10006.  
  10007.    Computer Tyme MarxMenu Users Manual                     Page 177
  10008.    _______________________________________________________________
  10009.  
  10010.  
  10011.     Shl                     Shl : Operator
  10012.     Shr                     Shr : Operator
  10013.     Sin                     Sin (Radians) : Real
  10014.     Sqr                     Sqr (Real) : Real
  10015.     Succ                    Succ (number) : Number
  10016.     Value                   Value (string) : Number
  10017.     Xor                     Xor : Operator
  10018.  
  10019.    FLOAT COMMANDS   FLOAT COMMANDS   FLOAT COMMANDS
  10020.  
  10021.     *                       * : Operator
  10022.     +                       + : Operator
  10023.     -                       - : Operator
  10024.     /                       / : Operator
  10025.     <                       < : Operator
  10026.     <=                      <= : Operator
  10027.     <>                      <> : Operator
  10028.     =                       = : Operator
  10029.     >                       > : Operator
  10030.     >=                      >= : Operator
  10031.     Abs                     Abs : Number
  10032.     ArcTan                  ArcTan (Radians) : Real
  10033.     Cos                     Cos (Radians) : Real
  10034.     Exp                     Exp (Real) : Real
  10035.     Fraction                Fraction (Real) : Real
  10036.     Int                     Int (Real) : Real
  10037.     Integer                 Integer (Real) : Number
  10038.     Ln                      Ln (Real) : Real
  10039.     Max                     Max (Num,Num) : Num
  10040.     Min                     Min (Num,Num) : Num
  10041.     Pi                      Pi : Real
  10042.     Power                   Power (Real,Real) : Real
  10043.     Real                    Real (Integer) : Real
  10044.     Sin                     Sin (Radians) : Real
  10045.     Sqr                     Sqr (Real) : Real
  10046.  
  10047.  
  10048.  
  10049.    Computer Tyme MarxMenu Users Manual                     Page 178
  10050.    _______________________________________________________________
  10051.  
  10052.  
  10053.    STRING COMMANDS   STRING COMMANDS   STRING COMMANDS
  10054.  
  10055.     +                       + : Operator
  10056.     <                       < : Operator
  10057.     <=                      <= : Operator
  10058.     <>                      <> : Operator
  10059.     =                       = : Operator
  10060.     >                       > : Operator
  10061.     >=                      >= : Operator
  10062.     %MenuFileName           %MenuFileName : String
  10063.     BatFileName             BatFileName : String
  10064.     BinString               BinString (Number, Length) : String
  10065.     BlankMessage            BlankMessage (string)
  10066.     BuildPath               BuildPath (Array)
  10067.     Char                    Char (number) : String
  10068.     CleanFileName           CleanFileName (string) : String
  10069.     CmdLine                 CmdLine : String
  10070.     DateString              DateString (Time) : String
  10071.     Delete                  Delete (string,pos,count)
  10072.     DosVersionString        DosVersionString : String
  10073.     Extension               Extension (String) : String
  10074.     FilePart                FilePart (String) : String
  10075.     ForceExtension          ForceExtension (String,Ext) : String
  10076.     HexString               HexString (Number, Length) : String
  10077.     InputString             InputString (String)
  10078.     Insert                  Insert (InsString,OrigString,Pos)
  10079.     KeySave                 KeySave : String
  10080.     LastKey                 LastKey : String
  10081.     Left                    Left (string,count) : String
  10082.     Length                  Length (string) : Number
  10083.     MarxVersion             MarxVersion : String
  10084.     Max                     Max (Num,Num) : Num
  10085.     Mid                     Mid (string,pos,count) : String
  10086.     Min                     Min (Num,Num) : Num
  10087.     MxCmd                   MxCmd : String
  10088.     NamePart                NamePart (String) : String
  10089.     NextWord                NextWord (String) : String
  10090.     OptionSwitch            OptionSwitch (String1,String2) : Boolean
  10091.     Ord                     Ord (Char) : Number
  10092.     OverKey                 OverKey : String
  10093.     ParamStr                ParamStr (Num) : String
  10094.     Path                    Path : String
  10095.     PathPart                PathPart (String) : String
  10096.     PickFile                PickFile (FileSpec,column,row,height) : String
  10097.     PickMany                PickMany(SourceArray,DestinationArray)
  10098.     PickManyPositions       PickManyPositions (Array)
  10099.     PickOne                 PickOne (Array) : String
  10100.     PickPosition            PickPosition : Number
  10101.     Pos                     Pos (substring,string) : Number
  10102.     Readln                  Readln : String
  10103.     ReleaseDate             ReleaseDate : String
  10104.     Right                   Right (string,count) : String
  10105.  
  10106.  
  10107.  
  10108.    Computer Tyme MarxMenu Users Manual                     Page 179
  10109.    _______________________________________________________________
  10110.  
  10111.  
  10112.     Security                Security (on/off)
  10113.     SelectPath              SelectPath : String
  10114.     SplitPath               SplitPath (Array)
  10115.     Str                     Str (number) : String
  10116.     StuffAKey               StuffAKey (String or Number)
  10117.     StuffKBD                StuffKBD (String)
  10118.     TimeString              TimeString (Time) : String
  10119.     Trim                    Trim (string)
  10120.     TrueName                TrueName (String) : String
  10121.     UniqueFileName          UniqueFileName : String
  10122.     UpperCase               UpperCase (String) : String
  10123.     UpperCaseOnly           UpperCaseOnly : Boolean
  10124.     Value                   Value (string) : Number
  10125.  
  10126.    VARIABLE COMMANDS   VARIABLE COMMANDS   VARIABLE COMMANDS
  10127.  
  10128.     Actual                  Actual
  10129.     Loc                     Loc (Procedure or Variable)
  10130.     Qualifier               Qualifier
  10131.     Shared                  Shared
  10132.     Var                     Var
  10133.     VarType                 VarType (Variable) : String
  10134.  
  10135.    BOOLEAN COMMANDS   BOOLEAN COMMANDS   BOOLEAN COMMANDS
  10136.  
  10137.     And                     And : Operator
  10138.     Not                     Not : Operator
  10139.     Or                      Or : Operator
  10140.     Xor                     Xor : Operator
  10141.  
  10142.  
  10143.  
  10144.    Computer Tyme MarxMenu Users Manual                     Page 180
  10145.    _______________________________________________________________
  10146.  
  10147.  
  10148.    ARRAY COMMANDS   ARRAY COMMANDS   ARRAY COMMANDS
  10149.  
  10150.     AppendArray             AppendArray (Array,Value)
  10151.     BuildPath               BuildPath (Array)
  10152.     Delete                  Delete (string,pos,count)
  10153.     Dispose                 Dispose (Variable)
  10154.     NovAttachedServers      NovAttahedServers (Array)
  10155.     NovGroupMembers         NovGroupsMembers (Group,Array)
  10156.     NovMyPrintQueues        NovMyPrintQueues (Array)
  10157.     NovObjects              NovObjects (2D Array)
  10158.     NovPrintQueues          NovPrintQueues (Array)
  10159.     NovPropertyValues       NovPropertyValues (Array, Object, Property, Type)
  10160.     NovReadGroups           NovReadGroups (Name,Array)
  10161.     NovReadSecurityEquals   NovReadSecurityEquals (Name,Array)
  10162.     NovScanProperties       NovScanProperties (Array, Object, ObjectType)
  10163.     NovScanTrusteePaths     NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)
  10164.     NovServers              NovServers (Array)
  10165.     NovUsers                NovUsers (Array)
  10166.     NovUsersLoggedIn        NovUsersLoggedIn (Array)
  10167.     NovVolumes              NovVolumes (Array)
  10168.     NumberOfElements        NumberOfElememts (array) : Number
  10169.     PickMany                PickMany(SourceArray,DestinationArray)
  10170.     PickManyPositions       PickManyPositions (Array)
  10171.     PickOne                 PickOne (Array) : String
  10172.     PickPosition            PickPosition : Number
  10173.     PosInList               PosInList (String,Array) : Number
  10174.     PosInSortedList         PosInSortedList (String,Array) : Number
  10175.     ReadAscTextFile         ReadAscTextFile (FileName,2D Array)
  10176.     ReadDirectory           ReadDirectory (Path,Array)
  10177.     ReadEnvironment         ReadEnvironment (Array)
  10178.     ReadTextFile            ReadTextFile (FileName,Array)
  10179.     SetArraySize            SetArraySize (Array,Size)
  10180.     SortArray               SortArray (Array)
  10181.     SplitPath               SplitPath (Array)
  10182.     ViewArray               ViewArray (Array)
  10183.     WriteTextFile           WriteTextFile (FileName,Array)
  10184.  
  10185.  
  10186.  
  10187.    Computer Tyme MarxMenu Users Manual                     Page 181
  10188.    _______________________________________________________________
  10189.  
  10190.  
  10191.    MEMORY COMMANDS   MEMORY COMMANDS   MEMORY COMMANDS
  10192.  
  10193.     ApplicationMemory       ApplicationMemory : Number
  10194.     Dispose                 Dispose (Variable)
  10195.     FreeEms                 FreeEMS : Number
  10196.     FreeMem                 FreeMem(Segment)
  10197.     FreeMemory              FreeMemory : Number
  10198.     GetMem                  GetMem (Number) : Segment
  10199.     Mem                     Mem (seg,ofs) : Number
  10200.     MemL                    MemL (seg,ofs) : Number
  10201.     MemSize                 MemSize : Number
  10202.     MemW                    MemW (seg,ofs) : Number
  10203.     Offset                  Offset (String) : Number
  10204.     Port                    Port (number) : Number
  10205.     ReadFileBlock           ReadFileBlock (Name,Offset,Size,Segment)
  10206.     Segment                 Segment (String) : Number
  10207.     TotalEms                TotalEMS : Number
  10208.     WriteFileBlock          WriteFileBlock (Name,Offset,Size,Segment)
  10209.  
  10210.    NOVELL COMMANDS   NOVELL COMMANDS   NOVELL COMMANDS
  10211.  
  10212.     AssignList              AssignList (2D Array)
  10213.     CancelListEntry         CancelListEntry (Local Name)
  10214.     LastDrive               LastDrive : String
  10215.     MachineName             MachineName : String
  10216.     MakeListEntry           MakeListEntry (Local Name, Server Name)
  10217.     NovAccountExpDate       NovAccountExpDate (UserName) : Date
  10218.     NovAddUserToGroup       NovAddUserToGroup (User,Group)
  10219.     NovAddToSet             NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)
  10220.     NovAttach               NovAttach (Server)
  10221.     NovAttachedServers      NovAttahedServers (Array)
  10222.     NovBroadcastMode        NovBroadcastMode (Mode)
  10223.     NovCaptureCopies        NovCaptureCopies (Port) : Number
  10224.     NovCaptureFF            NovCaptureFF (Port) On/Off
  10225.     NovCaptureForm          NovCaptureForm (Port) : Number
  10226.     NovCaptureQueue         NovCaptureQueue (Port)
  10227.     NovCaptureReset         NovCaptureReset (Port) : String
  10228.     NovCaptureSetup         NovCaptureSetup (Port) : String
  10229.     NovCaptureTabSize       NovCaptureTabSize (Port) : number
  10230.     NovCaptureTimeOut       NovCaptureTimeOut (Port) : number
  10231.     NovCaptureUseBanner     NovCaptureUseBanner (Port)
  10232.     NovChangePassword       NovChangePassword (OldPassword,NewPassword)
  10233.     NovCleanVolumeName      NovCleanVolumeName (String) : String
  10234.     NovClearConnection      NovClearConnection (Connection Number)
  10235.     NovCloseSemaphore       NovCloseSemaphore (Name)
  10236.     NovConnection           NovConnection : Number
  10237.     NovConnectionsInUse     NovConnectionsInUse : Number
  10238.     NovConsoleOperator      NovConsoleOperator : Boolean
  10239.     NovCreateObject         NovCreateObject (Name, ObjectType)
  10240.     NovCreateProperty       NovCreateProperty (Object, Property, ObjectType)
  10241.     NovDefaultServer        NovDefaultServer : String
  10242.     NovDeleteFromSet        NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)
  10243.  
  10244.  
  10245.  
  10246.    Computer Tyme MarxMenu Users Manual                     Page 182
  10247.    _______________________________________________________________
  10248.  
  10249.  
  10250.     NovDeleteObject         NovDeleteObject (Object,Type)
  10251.     NovDetach               NovDetach (Server)
  10252.     NovDownServer           NovDownServer
  10253.     NovEndCapture           NovEndCapture (Port)
  10254.     NovFreeDirSlots         NovFreeDirSlots (Path) : Number
  10255.     NovFreeVolumeSpace      NovFreeVolumeSpace (Path) : Number
  10256.     NovForceDownServer      NovForceDownServer
  10257.     NovFullName             NovFullName (User)
  10258.     NovGetMessage           NovGetMessage : String
  10259.     NovGraceLoginReset      NovGraceLoginReset (User) : Num
  10260.     NovGraceLogins          NovGraceLogins (User) : Num
  10261.     NovGroupMembers         NovGroupsMembers (Group,Array)
  10262.     NovGroups               NovGroups (Array)
  10263.     NovInGroup              NovInGroup (Group) : Boolean
  10264.     NovLastLoginDate        NovLastLoginDate (User) : Date
  10265.     NovLogin                NovLogin (Name,Password)
  10266.     NovLoginName            NovLoginName (Connection) : String
  10267.     NovLogout               NovLogout
  10268.     NovMapDrive             NovMapDrive (Drive,Directory)
  10269.     NovMapRoot              NovMapRoot (Drive,Path)
  10270.     NovMaxConnections       NovMaxConnections : Number
  10271.     NovMinPasswordLength    NovMinPasswordLength (User) : Num
  10272.     NovMyLoginName          NovMyLoginName : String
  10273.     NovMyPassword           NovMyPassword (Password) : Boolean
  10274.     NovMyPrintQueues        NovMyPrintQueues (Array)
  10275.     NovObjectID             NovObjectID (User) : String
  10276.     NovObjects              NovObjects (2D Array)
  10277.     NovObjectSecurity       NovObjectSecurity : Number
  10278.     NovOpenSemaphore        NovOpenSemaphore (Name,Value)
  10279.     NovPasswordExpDate      NovPasswordExpDate (UserName) : Date
  10280.     NovPreferredServer      NovPreferredServer : String
  10281.     NovPrimaryServer        NovPrimaryServer : String
  10282.     NovPrintQueues          NovPrintQueues (Array)
  10283.     NovPropertySecurity     NovPropertySecurity : Number
  10284.     NovPropertyValues       NovPropertyValues (Array, Object, Property, Type)
  10285.     NovReadGroups           NovReadGroups (Name,Array)
  10286.     NovReadSecurityEquals   NovReadSecurityEquals (Name,Array)
  10287.     NovRemoveUserFromGroup  NovRemoveUserFromGroup (User,Group)
  10288.     NovRenameObject         NovRenameObject (OldName, NewName, ObjectType)
  10289.     NovResult               NovResult : Number
  10290.     NovScanProperties       NovScanProperties (Array, Object, ObjectType)
  10291.     NovScanTrusteePaths     NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)
  10292.     NovSecurityEquals       NovSecurityEquals (Security) : Boolean
  10293.     NovSemaphoreTimeOut     NovSemaphoreTimeOut
  10294.     NovSemaphoreUsers       NovSemaphoreUsers (Name) : Number
  10295.     NovSemaphoreValue       NovSemaphoreValue (Name) : Number
  10296.     NovServerLogin          NovServerLogin (On/Off)
  10297.     NovServers              NovServers (Array)
  10298.     NovServerTime           NovServerTime : Time
  10299.     NovSendMessage          NovSendMessage (Message,Connection)
  10300.     NovSetPreferredServer   NovSetPreferredServer (Server)
  10301.     NovSetPrimaryServer     NovSetPrimaryServer (Server)
  10302.  
  10303.  
  10304.  
  10305.    Computer Tyme MarxMenu Users Manual                     Page 183
  10306.    _______________________________________________________________
  10307.  
  10308.  
  10309.     NovSetProperty          NovSetProperty (On/Off)
  10310.     NovSignalSemaphore      NovSignalSemaphore (Name)
  10311.     NovStaticObject         NovStaticObject : Boolean
  10312.     NovStaticProperty       NovStaticProperty : Boolean
  10313.     NovStationAddress       NovStationAddress (Connection) : String
  10314.     NovTotalDirSlots        NovTotalDirSlots (Path) : Number
  10315.     NovTotalVolumeSpace     NovTotalVolumeSpace (Path) : Number
  10316.     NovUserInGroup          NovUserInGroup (Name,Group) : Boolean
  10317.     NovUsers                NovUsers (Array)
  10318.     NovUsersLoggedIn        NovUsersLoggedIn (Array)
  10319.     NovVersionNumber        NovVersionNumber : Number
  10320.     NovVolumeNumber         NovVolumeNumber (Directory) : Number
  10321.     NovVolumes              NovVolumes (Array)
  10322.     NovWaitOnSemaphore      NovWaitOnSemaphore (Name) : Boolean
  10323.     UseNovPassword          UseNovPassword : Boolean
  10324.  
  10325.    MSNET COMMANDS   MSNET COMMANDS   MSNET COMMANDS
  10326.  
  10327.     AssignList              AssignList (2D Array)
  10328.     CancelListEntry         CancelListEntry (Local Name)
  10329.     MachineName             MachineName : String
  10330.     MakeListEntry           MakeListEntry (Local Name, Server Name)
  10331.  
  10332.    VINES COMMANDS   VINES COMMANDS   VINES COMMANDS
  10333.  
  10334.     AssignList              AssignList (2D Array)
  10335.     CancelListEntry         CancelListEntry (Local Name)
  10336.     MachineName             MachineName : String
  10337.     MakeListEntry           MakeListEntry (Local Name, Server Name)
  10338.     NovLogout               NovLogout
  10339.     VinCheckService         VinCheckService (Service) : Number
  10340.     VinesInt                VinesInt : Number
  10341.     VinesLoaded             VinesLoaded : Boolean
  10342.     VinUserName             VinUserName : String
  10343.     VinSerialNumber         VinSerialNumber (Drive) : Number
  10344.  
  10345.  
  10346.  
  10347.    Computer Tyme MarxMenu Users Manual                     Page 184
  10348.    _______________________________________________________________
  10349.  
  10350.  
  10351.    TIME COMMANDS   TIME COMMANDS   TIME COMMANDS
  10352.  
  10353.     BadDate                 BadDate : Boolean
  10354.     DateSeparator           DateSeparator : String
  10355.     DateString              DateString (Time) : String
  10356.     Day                     Day : Number
  10357.     DayOf                   DayOf (Date) : Number
  10358.     DayOfWeek               DayOfWeek : Number
  10359.     DayOfWeekOf             DayOfWeekOf (Date) : Number
  10360.     FileTime                FileTime (File) : Time
  10361.     Hour                    Hour : Number
  10362.     HourOf                  HourOf (Date) : Number
  10363.     Hundredth               Hundredth : Number
  10364.     Minute                  Minute : Number
  10365.     MinuteOf                MinuteOf (Date) : Number
  10366.     Month                   Month : Number
  10367.     MonthOf                 MonthOf (Date) : Number
  10368.     NovAccountExpDate       NovAccountExpDate (UserName) : Date
  10369.     NovLastLoginDate        NovLastLoginDate (User) : Date
  10370.     NovPasswordExpDate      NovPasswordExpDate (UserName) : Date
  10371.     NovServerTime           NovServerTime : Time
  10372.     Now                     Now : Time
  10373.     Second                  Second : Number
  10374.     SecondOf                SecondOf (Date) : Number
  10375.     TimeOf                  TimeOf (String) : Number
  10376.     Timer                   Timer : Number
  10377.     TimeSeparator           TimeSeparator : String
  10378.     TimeString              TimeString (Time) : String
  10379.     Today                   Today : Date
  10380.     Tomorrow                Tomorrow : Time
  10381.     Year                    Year : Number
  10382.     YearOf                  YearOf (Date) : Number
  10383.  
  10384.  
  10385.  
  10386.    Computer Tyme MarxMenu Users Manual                     Page 185
  10387.    _______________________________________________________________
  10388.  
  10389.  
  10390.    EXECUTION COMMANDS   EXECUTION COMMANDS   EXECUTION COMMANDS
  10391.  
  10392.     Bat                     Bat (string)
  10393.     Chain                   Chain (MenuName)
  10394.     ClearScreenFirst        ClearScreenFirst (on/off)
  10395.     ColdBoot                ColdBoot
  10396.     DosWindow               DosWindow (on/off)
  10397.     Execute                 Execute (command string)
  10398.     ExitCode                ExitCode
  10399.     ExitMenu                ExitMenu
  10400.     IdleProgram             IdleProgram : Procedure
  10401.     Jump                    Jump (menu)
  10402.     KeySave                 KeySave : String
  10403.     Logoff                  Logoff
  10404.     LogoffTime              LogoffTime : Number
  10405.     MxCmd                   MxCmd : String
  10406.     NoExit                  NoExit
  10407.     Overlay                 OverLay (MenuName)
  10408.     PauseAfterExecute       PauseAfterExecute (On/Off)
  10409.     Reboot                  Reboot
  10410.     ReturnCode              ReturnCode : Number
  10411.     StuffAKey               StuffAKey (String or Number)
  10412.     StuffKBD                StuffKBD (String)
  10413.     UseCommand              UseCommand (on/off)
  10414.  
  10415.    DISPLAY COMMANDS   DISPLAY COMMANDS   DISPLAY COMMANDS
  10416.  
  10417.     BigShadow               BigShadow
  10418.     Blanked                 Blanked : Boolean
  10419.     BlankScreenProgram      BlankScreenProgram : Procedure
  10420.     BlankTime               BlankTime (minutes)
  10421.     BlockBox                BlockBox
  10422.     BoxHeader               BoxHeader (string)
  10423.     BoxHeaderLeft           BoxHeaderLeft (string)
  10424.     BoxHeaderRight          BoxHeaderRight (string)
  10425.     BoxFooter               BoxFooter (string)
  10426.     BoxFooterLeft           BoxFooterLeft (string)
  10427.     BoxFooterRight          BoxFooterRight (string)
  10428.     BrightBackground        BrightBackground (On/Off)
  10429.     ClearLine               ClearLine [char]
  10430.     ClearScreen             ClearScreen [char]
  10431.     ClearScreenOnExit       ClearScreenOnExit (on/off)
  10432.     ClockMode               ClockMode
  10433.     ClockPos                ClockPos (column,row)
  10434.     ColorScreen             ColorScreen : Boolean
  10435.     Console                 Console (On/Off)
  10436.     ConsolePos              ConsolePos (column,row)
  10437.     CurrentWindow           CurrentWindow : Number
  10438.     Cursor                  Cursor (On/Off)
  10439.     CustomBox               CustomBox (String)
  10440.     DisplayType             DisplayType : Number
  10441.     DoubleLineBox           DoubleLineBox
  10442.  
  10443.  
  10444.  
  10445.    Computer Tyme MarxMenu Users Manual                     Page 186
  10446.    _______________________________________________________________
  10447.  
  10448.  
  10449.     DrawBox                 DrawBox (column,row,width,height)
  10450.     EraseTopWindow          EraseTopWindow
  10451.     EraseWindow             EraseWindow (Number)
  10452.     Explode                 Explode (on/off)
  10453.     ExplodeDelay            ExplodeDelay (number)
  10454.     ForceExplosion          ForceExplosion (On/Off)
  10455.     GotoXY                  GotoXY (column,row)
  10456.     InactiveBox             InactiveBox (BoxType)
  10457.     InactiveShadow          InactiveShadow (On/Off)
  10458.     LockWord                LockWord (word)
  10459.     MoveWindow              MoveWindow (Horizontal,Vertical)
  10460.     NoBoxBorder             NoBoxBorder
  10461.     PullMenu                PullMenu (on/off)
  10462.     ResizeWindow            ResizeWindow (Horizontal Vertical)
  10463.     RollWindow              RollWindow (number)
  10464.     ScreenHeight            ScreenHeight : Number
  10465.     ScreenWidth             ScreenWidth : Number
  10466.     ScrollMove              ScrollMove (On/Off)
  10467.     SetTopWindow            SetTopWindow (Number)
  10468.     SetWindowUnder          SetWindowUnder (Window1,Window2)
  10469.     Shadow                  Shadow (on/off)
  10470.     ShadowPosition          ShadowPosition (number)
  10471.     SingleLineBox           SingleLineBox
  10472.     SmallShadow             SmallShadow
  10473.     Sound                   Sound (on/off)
  10474.     StandardIO              StandardIO (on/off)
  10475.     Suggest                 Suggest (Char)
  10476.     TextMode                TextMode (num)
  10477.     UnBlank                 UnBlank : Boolean
  10478.     UseArrows               UseArrows
  10479.     VideoMode               VideoMode : Number
  10480.     VideoPage               VideoPage : Number
  10481.     ViewArray               ViewArray (Array)
  10482.     ViewTextFile            ViewTextFile (Name)
  10483.     WhereX                  WhereX : Number
  10484.     WhereXAbs               WhereXAbs : Number
  10485.     WhereYAbs               WhereYAbs : Number
  10486.     Window                  Window (X,Y,Width,Height)
  10487.     WindowHeight            WindowHeight : Number
  10488.     WindowWidth             WindowWidth : Number
  10489.     WinX                    WinX : Number
  10490.     WinY                    WinY : Number
  10491.     Write                   Write (string)
  10492.     WriteCenter             WriteCenter (string)
  10493.     Writeln                 Writeln (string)
  10494.     WriteVertical           WriteVertical (string)
  10495.  
  10496.  
  10497.  
  10498.    Computer Tyme MarxMenu Users Manual                     Page 187
  10499.    _______________________________________________________________
  10500.  
  10501.  
  10502.    COLOR COMMANDS   COLOR COMMANDS   COLOR COMMANDS
  10503.  
  10504.     Blink                   Blink : Boolean
  10505.     BoxBorderColor          BoxBorderColor (forecolor,backcolor)
  10506.     BoxHeaderColor          BoxHeaderColor (forecolor,backcolor)
  10507.     BoxInsideColor          BoxInsideColor (forecolor,backcolor)
  10508.     CapsColor               CapsColor (forecolor,backcolor)
  10509.     ClockColor              ClockColor (forecolor,backcolor)
  10510.     ConsoleBorderColor      ConsoleBorderColor (Color,Color)
  10511.     ConsoleHeaderColor      ConsoleHeaderColor (Color,Color)
  10512.     ConsoleInsideColor      ConsoleInsideColor (Color,Color)
  10513.     InactiveBoxColor        InactiveBoxColor (foreground,background)
  10514.     InverseColor            InverseColor (forecolor,backcolor)
  10515.     ShadowColor             ShadowColor (ForeColor,BackColor)
  10516.     TextBackground          TextBackground (color)
  10517.     TextColor               TextColor (forecolor,backcolor)
  10518.  
  10519.    ENVIRONMENT COMMANDS   ENVIRONMENT COMMANDS   ENVIRONMENT COMMANDS
  10520.  
  10521.     BuildPath               BuildPath (Array)
  10522.     CurrentEnvironment      CurrentEnvironment
  10523.     EnvFree                 EnvFree : Number
  10524.     EnvSize                 EnvSize : Number
  10525.     FixPath                 FixPath
  10526.     KeySave                 KeySave : String
  10527.     MasterEnvironment       MasterEnvironment
  10528.     ModifyPath              ModifyPath
  10529.     MxCmd                   MxCmd : String
  10530.     ParentEnvironment       ParentEnvironment
  10531.     ReadEnv                 ReadEnv (String) : String
  10532.     ReadEnvironment         ReadEnvironment (Array)
  10533.     SavePosition            SavePosition (On/Off)
  10534.     SetEnv                  SetEnv (String)
  10535.     ShellEnvironment        ShellEnvironment
  10536.     SplitPath               SplitPath (Array)
  10537.  
  10538.  
  10539.  
  10540.    Computer Tyme MarxMenu Users Manual                     Page 188
  10541.    _______________________________________________________________
  10542.  
  10543.  
  10544.    SYSTEM COMMANDS   SYSTEM COMMANDS   SYSTEM COMMANDS
  10545.  
  10546.     CapsLock                CapsLock : Boolean
  10547.     ClusterSize             ClusterSize <drive> : Number
  10548.     CpuClass                CpuClass : Number
  10549.     DosVersion              DosVersion : Number
  10550.     DosVersionString        DosVersionString : String
  10551.     Drives                  Drives : Number
  10552.     Floppies                Floppies : Number
  10553.     FreeDiskSpace           FreeDiskSpace <drive> : Number
  10554.     Intr                    Intr (Interrupt,Registers)
  10555.     LastDrive               LastDrive : String
  10556.     MinorDosVersion         MinorDosVersion : Number
  10557.     MsDos                   MsDos (Registers)
  10558.     NumLock                 NumLock : Boolean
  10559.     ParallelPorts           ParallelPorts : Number
  10560.     ScrollLock              ScrollLock : Boolean
  10561.     SerialPorts             SerialPorts : Number
  10562.     TotalDiskSpace          TotalDiskSpace <drive> : Number
  10563.     UsedDiskSpace           UsedDiskSpace <drive> : Number
  10564.     Volume                  Volume (drive)
  10565.  
  10566.    FILE COMMANDS   FILE COMMANDS   FILE COMMANDS
  10567.  
  10568.     ChDir                   ChDir (string)
  10569.     DelFile                 DelFile (Name)
  10570.     DirectoriesOnly         DirectoriesOnly (On/Off)
  10571.     EndOfFile               EndOfFile (FileVar) : Boolean
  10572.     ExistDir                ExistDir (directory) : Boolean
  10573.     ExistFile               ExistFile : Boolean
  10574.     ExistOnPath             ExistOnPath (string) : String
  10575.     FileAppend              FileAppend (FileVar)
  10576.     FileAssign              FileAssign (FileVar,String)
  10577.     FileAttr                FileAttr (string) : Number
  10578.     FileClose               FileClose (FileVar)
  10579.     FileCreate              FileCreate (FileVar)
  10580.     FileDate                FileDate (string) : Number
  10581.     FileFlush               FileFlush (FileVar)
  10582.     FileLog                 FileLog (FileName,String)
  10583.     FileOpen                FileOpen (FileVar)
  10584.     FilePos                 FilePos (FileVar) : Number
  10585.     FileReadln              FileReadln (FileVar) : String
  10586.     FileRename              FileRename (Old,New)
  10587.     FileResult              FileResult : Number
  10588.     FileSeek                FileSeek (FileVar,Number)
  10589.     FileSize                FileSize (string) : Number
  10590.     FileTime                FileTime (File) : Time
  10591.     FileWrite               FileWrite (FileVar,String)
  10592.     FileWriteln             FileWriteln (FileVar,String)
  10593.     HiddenAndSystem         HiddenAndSystem (On/Off)
  10594.     IncludeDirectories      IncludeDirectories (On/Off)
  10595.     MkDir                   MkDir (String)
  10596.  
  10597.  
  10598.  
  10599.    Computer Tyme MarxMenu Users Manual                     Page 189
  10600.    _______________________________________________________________
  10601.  
  10602.  
  10603.     ReadAscTextFile         ReadAscTextFile (FileName,2D Array)
  10604.     ReadDirectory           ReadDirectory (Path,Array)
  10605.     ReadFileBlock           ReadFileBlock (Name,Offset,Size,Segment)
  10606.     ReadTextFile            ReadTextFile (FileName,Array)
  10607.     RmDir                   RmDir (String)
  10608.     TextPos                 TextPos : Number
  10609.     TextSeek                TextSeek (Number)
  10610.     TrueName                TrueName (String) : String
  10611.     UniqueFileName          UniqueFileName : String
  10612.     ViewTextFile            ViewTextFile (Name)
  10613.     WholeFileNames          WholeFileNames (On/Off)
  10614.     WriteFileBlock          WriteFileBlock (Name,Offset,Size,Segment)
  10615.     WriteTextFile           WriteTextFile (FileName,Array)
  10616.  
  10617.    ANSI COMMANDS   ANSI COMMANDS   ANSI COMMANDS
  10618.  
  10619.     ClearLine               ClearLine [char]
  10620.     ClearScreen             ClearScreen [char]
  10621.     GotoXY                  GotoXY (column,row)
  10622.     StandardIO              StandardIO (on/off)
  10623.     TextBackground          TextBackground (color)
  10624.     TextColor               TextColor (forecolor,backcolor)
  10625.  
  10626.    PRINTER COMMANDS   PRINTER COMMANDS   PRINTER COMMANDS
  10627.  
  10628.     ClosePrinter            ClosePrinter
  10629.     NovCaptureCopies        NovCaptureCopies (Port) : Number
  10630.     NovCaptureFF            NovCaptureFF (Port) On/Off
  10631.     NovCaptureForm          NovCaptureForm (Port) : Number
  10632.     NovCaptureQueue         NovCaptureQueue (Port)
  10633.     NovCaptureReset         NovCaptureReset (Port) : String
  10634.     NovCaptureSetup         NovCaptureSetup (Port) : String
  10635.     NovCaptureTabSize       NovCaptureTabSize (Port) : number
  10636.     NovCaptureTimeOut       NovCaptureTimeOut (Port) : number
  10637.     NovCaptureUseBanner     NovCaptureUseBanner (Port)
  10638.     NovEndCapture           NovEndCapture (Port)
  10639.     NovPrintQueues          NovPrintQueues (Array)
  10640.     OpenPrinter             OpenPrinter
  10641.     Print                   Print (string)
  10642.     PrinterName             PrinterName (string)
  10643.     Println                 Println (String)
  10644.     PrintScreen             PrintScreen (On/Off)
  10645.  
  10646.  
  10647.  
  10648.    Computer Tyme MarxMenu Users Manual                     Page 190
  10649.    _______________________________________________________________
  10650.  
  10651.  
  10652.    INTERNATIONAL COMMANDS   INTERNATIONAL COMMANDS   INTERNATIONAL COMMANDS
  10653.  
  10654.     CountryCode             CountryCode : Number
  10655.     DateSeparator           DateSeparator : String
  10656.     DateString              DateString (Time) : String
  10657.     DecimalSeparator        DecimalSeparator : String
  10658.     TimeOf                  TimeOf (String) : Number
  10659.     TimeSeparator           TimeSeparator : String
  10660.     UpperCase               UpperCase (String) : String
  10661.  
  10662.    DESQVIEW COMMANDS   DESQVIEW COMMANDS   DESQVIEW COMMANDS
  10663.  
  10664.     DvAppNumber             DvAppNumber : Number
  10665.     DvFrame                 DvFrame (Handle,On/Off)
  10666.     DvFreeze                DvFreeze (Handle)
  10667.     DvHide                  DvHide (Handle)
  10668.     DvKillTask              DvKillTask (Handle)
  10669.     DvLastHandle            DvLastHandle : Number
  10670.     DvLoaded                DvLoaded : Boolean
  10671.     DvMoveWindow            DvMoveWindow (Handle,X,Y)
  10672.     DvMyHandle              DvMyHandle : Number
  10673.     DvPifExecute            DvPifExecute (Pif File)
  10674.     DvResizeWindow          DvResizeWindow (Handle,Width,Height)
  10675.     DvSetBottom             DvSetBottom (Handle)
  10676.     DvSetTop                DvSetTop (Handle)
  10677.     DvUnFreeze              DvUnFreeze (Handle)
  10678.     DvUnHide                DvUnHide (Handle)
  10679.  
  10680.    CONDITIONAL COMMANDS   CONDITIONAL COMMANDS   CONDITIONAL COMMANDS
  10681.  
  10682.     Else                    Else
  10683.     ElseIf                  ElseIf
  10684.     Endif                   EndIf
  10685.     EndLoop                 EndLoop
  10686.     EndWhile                EndWhile
  10687.     If                      If
  10688.     Loop                    Loop
  10689.     LoopIndex               LoopIndex : Number
  10690.     LoopLevel               LoopLevel : Number
  10691.     LoopLimit               LoopLimit : Number
  10692.     OnKey                   OnKey (char)
  10693.     OnScreenOnly            OnScreenOnly (On/Off)
  10694.     Password                Password (Pswd,column,row)
  10695.     Repeat                  Repeat
  10696.     Then                    Then
  10697.     Until                   Until
  10698.     While                   While
  10699.  
  10700.  
  10701.  
  10702.    Computer Tyme MarxMenu Users Manual                     Page 191
  10703.    _______________________________________________________________
  10704.  
  10705.  
  10706.    KEYBOARD COMMANDS   KEYBOARD COMMANDS   KEYBOARD COMMANDS
  10707.  
  10708.     InputString             InputString (String)
  10709.     InsertMode              InsertMode (On/Off)
  10710.     KbdReady                KbdReady : Boolean
  10711.     MenuKeyBuffer           MenuKeyBuffer
  10712.     ReadKey                 ReadKey : String
  10713.     Readln                  Readln : String
  10714.     SavePosition            SavePosition (On/Off)
  10715.     StuffAKey               StuffAKey (String or Number)
  10716.     StuffKBD                StuffKBD (String)
  10717.     StuffKeyboardNow        StuffKeyboardNow
  10718.     WaitOrKbdReady          WaitOrKbdReady (Number)
  10719.  
  10720.    MOUSECONTROL COMMANDS   MOUSECONTROL COMMANDS   MOUSECONTROL COMMANDS
  10721.  
  10722.     KeyFromMouse            KeyFromMouse : Boolean
  10723.     Mouse                   Mouse
  10724.     MouseHorizontal         MouseHorizontal (Number)
  10725.     MouseVertical           MouseVertical (Number)
  10726.  
  10727.    MUSIC COMMANDS   MUSIC COMMANDS   MUSIC COMMANDS
  10728.  
  10729.     KillMusic               KillMusic
  10730.     NotesLeft               NotesLeft : Num
  10731.     NotesPlayed             NotesPlayed : Num
  10732.     Tone                    Tone (Frequency,Duration)
  10733.  
  10734.    TASKMAX COMMANDS   TASKMAX COMMANDS   TASKMAX COMMANDS
  10735.  
  10736.     TMaxActiveTasks         TMaxActiveTasks : Number
  10737.     TMaxCreateTask          TMaxCreateTask (command string)
  10738.     TMaxCut                 TMaxCut (TaskID)
  10739.     TMaxDeleteTask          TMaxDeleteTask (TaskID)
  10740.     TMaxDirectSwitching     TMaxDirectSwitching (On/Off)
  10741.     TMaxEMSMemLim           TMaxEMSMemLim (Number)
  10742.     TMaxGetPasteBuffer      TMaxGetPasteBuffer (Array)
  10743.     TMaxInstalled           TMaxInstalled : Boolean
  10744.     TMaxMaxTasks            TMaxMaxTasks : Number
  10745.     TMaxPaste               TMaxPaste (TaskID)
  10746.     TMaxReadTaskInfo        TMaxReadTaskInfo (2D Array)
  10747.     TMaxResult              TMaxResult : Number
  10748.     TMaxReturnCount         TMaxReturnCount
  10749.     TMaxSetPasteBuffer      TMaxSetPasteBuffer (Array)
  10750.     TMaxSwitchTasks         TMaxSwitchTasks (TaskID)
  10751.     TMaxSwitchToManager     TMaxSwitchToManager
  10752.     TMaxTakeOver            TMaxTakeOver (On/Off)
  10753.     TMaxTaskOpenFiles       TMaxTaskOpenFiles (TadkID) : Number
  10754.     TMaxThisTask            TMaxThisTask : Number
  10755.     TMaxVersion             TMaxVersion : Number
  10756.  
  10757.    Other Computer Tyme Software:
  10758.    ======================================================
  10759.  
  10760.    The Computer Tyme Dos ToolBox... Makes DOS easier for the novice,
  10761.    more powerful for the professional.
  10762.  
  10763.    DIRECTORY MASTER is a powerful hard disk managment utility. It
  10764.    brings up your hard disk files and allows you to mark selected
  10765.    files so you can copy them, delete them, or move them. It also
  10766.    allows you to rename files, change dates, and change attributes.
  10767.    You can also run programs or set up your function keys to run
  10768.    programs on selected files.
  10769.  
  10770.    DOLIST makes being at DOS easier. It gives you full line editing,
  10771.    like a word processor, for your commands. It also stores commands
  10772.    so that you can re-execute them. It remembers subdirectories and
  10773.    allows you to go back to them by pressing the TAB key. It offers
  10774.    programmable function keys, DOS extensions, multiple execution,
  10775.    and many more features you have got to have.
  10776.  
  10777.    PICK DIRECTORY allows you to move through the directory system by
  10778.    displaying a graphic tree and letting you use your arrow keys to
  10779.    move around. It also lets you create, delete, rename, and hide
  10780.    directories.
  10781.  
  10782.    MARXTSR is a set of memory and TSR management utilities that let
  10783.    you load and unload TSRs (Terminate and stay resident programs)
  10784.    from memory. Utilities to list menory allocation and turn TSR's
  10785.    on and off.
  10786.  
  10787.    And many more ... Also includes is D, a fancy directory listing
  10788.    program; WHEREIS, for finding stuff on you hard disk, SORT, MOVE,
  10789.    FIND, FREE, PIPEDIR, VERSION, and many more.
  10790.  
  10791.    The Dos Toolbox sells for $59.95.
  10792.  
  10793.    ======================================================
  10794.  
  10795.    We are also selling QEdit from Semware. QEdit is a professional
  10796.    editor from Semware.
  10797.  
  10798.    1-800-548-5353 Order Line
  10799.    1-417-866-1222 Voice Line
  10800.    1-417-866-1665 BBS Data line * 1200/2400 * 8N1 * ANSI or VT100
  10801.  
  10802.    MarxMenu comes with MarxEdit and MARXTSR manager and a few goodies out of
  10803.    the DOS ToolBox. The Network Survival Kit is a network version of almost
  10804.    every utility I've ever written. It's sold on a per fileserver basis.
  10805.  
  10806.                  _______
  10807.             ____|__     |               (tm)
  10808.          --|       |    |-------------------
  10809.            |   ____|__  |  Association of
  10810.            |  |       |_|  Shareware
  10811.            |__|   o   |    Professionals
  10812.          -----|   |   |---------------------
  10813.               |___|___|    APPROVED VENDOR
  10814.  
  10815.       ==========================================
  10816.  
  10817.  
  10818.  
  10819.  
  10820.  
  10821.  
  10822.  
  10823.         Make Check            Computer Tyme            Order Form 2.37
  10824.         Payable To:    411 North Sherman Suite 300
  10825.                           Springfield Mo. 65802
  10826.                      (417) 866-1222  (800) 548-5353
  10827.  
  10828.         Please send me Computer Tyme Software.
  10829.  
  10830.         =============================================================
  10831.  
  10832.         Name:        ________________________________________________
  10833.  
  10834.         Address:     ________________________________________________
  10835.  
  10836.         City/St/Zip: ________________________________________________
  10837.  
  10838.         Phone:       ________________________________________________
  10839.  
  10840.         Computer:    ________________________________________________
  10841.  
  10842.         Got From:    ________________________________________________
  10843.  
  10844.         Comments:    ________________________________________________
  10845.  
  10846.                      ________________________________________________
  10847.  
  10848.  
  10849.         Single User Version:
  10850.  
  10851.         ___ Enclosed is $59.95 for MarxMenu.
  10852.  
  10853.         ___ Enclosed is $59.95 for the DOS ToolBox.
  10854.  
  10855.         ___ Enclosed is $99.95 for MarxMenu, the Dos ToolBox and DM3.
  10856.  
  10857.  
  10858.         Network Version (1 per file server):
  10859.  
  10860.         ___ Enclosed is $495 for Network Survival Kit.
  10861.  
  10862.         ___ Add $3.00 for Shipping and Handling.
  10863.  
  10864.         ___ I need 3 1/2 Inch Media.
  10865.  
  10866.  
  10867.         Credit Card Number: _______________ Expiration Date: ________
  10868.  
  10869.         Signature: __________________________________________________
  10870.  
  10871.         Master Card __   Visa __   Discover __
  10872.  
  10873.                     * We do not take American Express *
  10874.  
  10875.         =============================================================
  10876.